我正在编写自己的类来管理快速框架中的mongodb查询。
这个类看起来像
var PostModel = function(){};
PostModel.prototype.index = function(db){
db.open(function(err,db){
if(!err){
db.collection('post',function(err,collection){
collection.find().toArray(function(err,posts){
if(!err){
db.close();
return posts;
}
});
});
}
});
};
当我调用此函数时:
// GET /post index action
app.get('/post',function(req,res){
postModel = new PostModel();
var posts = postModel.index(db);
res.json(posts);
});
我不知道为什么函数索引似乎没有返回任何内容。
但是如果我改变像这样的索引函数
var PostModel = function(){};
PostModel.prototype.index = function(db){
db.open(function(err,db){
if(!err){
db.collection('post',function(err,collection){
collection.find().toArray(function(err,posts){
if(!err){
db.close();
console.log(posts);
}
});
});
}
});
};
注意console.log而不是return。通过这些更改,我可以在终端中看到我想要的所有帖子。这是因为该功能可以回复所有帖子。
问题是它没有返回帖子:(
答案 0 :(得分:4)
你正在使用异步功能,它们都会得到回调,所以你也需要使用回调:
var PostModel = function(){};
PostModel.prototype.index = function(db, callback){
db.open(function(err,db){
if(!err){
db.collection('post',function(err,collection){
collection.find().toArray(function(err,posts){
if(!err){
db.close();
callback(posts);
}
});
});
}
});
};