有人能告诉我如何在mongoose中创建自增字段而不使用任何库或插件吗?有简单易行的方法吗?
有人能告诉我如何在mongoose中创建自增字段而不使用任何库或插件吗?有简单易行的方法吗?
使用Mongoose pre-save函数可以非常简单和容易地实现Mongoose中的自动增量。以下是我的用户集合代码,您可以在您的Mongoose模型(schema)中尝试同样的技巧来实现自动增量。将此代码粘贴到您的集合模式文件中,并根据您的集合模式替换一些变量(userSchema,user)。
userSchema.pre('save', function(next) {
var currentDate = new Date();
this.updated_at = currentDate;
if (!this.created_at)
this.created_at = currentDate;
var sno = 1;
var user = this;
User.find({}, function(err, users) {
if (err) throw err;
sno = users.length + 1;
user.sno = sno;
next();
});
});
id = 1 +(最后一条记录的id)
。
2:您可以使用插件mongoose-auto-increment。
3:最后一个选择是将最后增加的值保存在单独的集合中(集合名称:autoIncrement
,列为collection和sno),在创建记录之前获取该集合的sno值并将其递增,创建您的记录,然后再次在autoIncrement集合中更新sno值。var CounterSchema = Schema({
_id: {type: String, required: true},
seq: { type: Number, default: 0 }
});
var counter = mongoose.model('counter', CounterSchema);
var entitySchema = mongoose.Schema({
testvalue: {type: String}
});
entitySchema.pre('save', function(next) {
var doc = this;
counter.findByIdAndUpdate({_id: 'entityId'}, {$inc: { seq: 1} }, function(error, counter) {
if(error)
return next(error);
doc.testvalue = counter.seq;
next();
});
});