mongoosejs在方法中执行查询

我正在使用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()的模型。

谢谢!

这有点神秘,我不知道它是否logging在任何地方,但是我通过constructor属性访问实例的模型,可靠地完成了这个任务:

 this.constructor.findOne({random: random}, function(err, doc) {