等待Mongoose Query完成

时间:2013-12-12 06:15:13

标签: node.js mongodb mongoose

说我有以下代码:

function MyClass(id, x, y, z) {
    var self = this;
    MyModel.findByID(id, function(err, model) {
        if(err) { // Do something }
        self.model = model
    });
    this.x = x;
    this.y = y;
    this.z = z;
}

MyClass.prototype.myMethod = function() {
    console.log(this.model.id);
}

var obj = new MyClass(123, 7, 8, 9);
obj.myMethod();

我如何确保在this.model中设置myMethod,因为Mongoose查询是异步的。或者我是以“非”NodeJS方式编程的?

由于

1 个答案:

答案 0 :(得分:1)

您可以传递在数据库查询结束时运行的回调,并为目标变量分配一个值:

function MyClass(id, x, y, z, fn) {
  var self = this;

  this.x = x;
  this.y = y;
  this.z = z;

  MyModel.findByID(id, function(err, model) {
    self.model = model
    fn.call(self);
  });
};

MyClass.prototype.myMethod = function() {
  console.log(this.model.id);
};

然后使用它:

var obj = new MyClass(123, 7, 8, 9, function() {
  obj.myMethod();
});