mongoosejs在方法中执行查询

时间:2014-02-06 22:44:12

标签: node.js mongoose

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

谢谢!

1 个答案:

答案 0 :(得分:2)

它有点神秘,我不知道它是否记录在任何地方,但我过去通过其constructor属性访问实例的模型可靠地做到了这一点:

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