我正在使用mongoosejs并使用自定义方法在预存期间填充一些数据。有没有办法在方法中查询数据库?
例如:
UserSchema.methods.createRandom = function(callback) {
var random = 123;
this.findOne({random: random}, function(err, doc) {
if (!doc) return callback(random);
this.createRandom(callback);
});
}
UserSchema.pre('save', function(next) {
this.createRandom(function(random) {
this.random = random;
next();
});
}
这基本上是我试图实现的,但方法中的this
不引用模型,它引用要保存的对象。无论如何都要访问findOne()
的模型。
谢谢!
答案 0 :(得分:2)
它有点神秘,我不知道它是否记录在任何地方,但我过去通过其constructor
属性访问实例的模型可靠地做到了这一点:
this.constructor.findOne({random: random}, function(err, doc) {