假设我有以下代码:
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();
如何确保在 myMethod
中设置 this.model
,因为 Mongoose 查询是异步的。或者我是以“非”NodeJS 方式编程?
谢谢
最佳答案
您可以传递一个回调,该回调将在数据库查询结束且目标变量已分配值时运行:
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();
});
关于node.js - 等待 Mongoose 查询完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536323/