gpt4 book ai didi

node.js - 如何在 Mongoose 中创建复合唯一的自动增量字段?

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:29 25 4
gpt4 key购买 nike

我想创建一个架构,可以在其中为用户设置特定名称,例如许多人可以拥有的显示名称,同时还允许人们根据该名称添加它们。我的解决方案是将该名称保存到具有两个字段的模型中,其中一个字段是名称本身,第二个字段的 id 表示当前使用该名称的次数。

var DisplayName = new Schema({
account: {
type: ObjectId,
ref: 'Account',
},
name: {
type: String,
trim: true,
required: true,
},
number: {
type: Number,
required: true,
}
});

这是我所拥有的,但我只想说

var displayName = new DisplayName({
name: 'name',
account: req.user.id
});

displayName.save();

它会自动为我设置字段?

编辑:我意识到原来的问题没有足够的细节:

我想使用 mongoose 的内置保存后处理程序在创建时为我生成此字段。创建后不应更新,仅在第一次设置。

最佳答案

您可以使用如下所示的函数来完成该操作。

function saveDisplayName(schema) {
var query = DisplayName.find({name: schema.name});

query.then(function(results) {

var userNumber = 1;
if (results.length < 1) {
return userNumber;
}
for (var i = 0; i <= results.length - 1; i++) {
var result = results[i];

if (userNumber <= result.number) {
userNumber = result.number + 1;
}
if (i == results.length - 1) {
return userNumber;
}
}
}).then(function(userNumber) {
schema.number = userNumber;

var displayName = new DisplayName(schema);

return displayName.save();
}).then(function(data) {
console.log('Data saved', data)
}).then(null, console.log);
}

关于node.js - 如何在 Mongoose 中创建复合唯一的自动增量字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43316215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com