在我的节点应用程序中,我使用Mongoose将mongodb用于数据存储。以下是我的代码:
var client = new OAuthClient({"name":"default"});
client.user = req.user;
client.username = req.body.username;
console.log("b4 save");
client.save();
OAuthClient.find({username:req.body.username}).exec(function(err, clients) {
if (err) {
res.render('error', {
status: 500
});
} else {
console.log("clientssssssss=" + util.inspect(clients));
res.jsonp(clients);
}
});
但是
console.log(“clientssssssss =”+ util.inspect(clients));返回空数组[]。
当我在ROBOMONGO中执行命令时,返回结果。假设我的查询是这样的OAuthClient.find({username:'user4'})
结果即将到来,但上面的代码返回空数组。帮我解决这个问题。提前谢谢..
答案 0 :(得分:1)
您的问题是回调,如下所示:
client.save(); // <-- not waiting for callback
OAuthClient.find({username:req.body.username}).exec(function(err, clients) {
if (err) {
您需要等待回调,因为.save()
无法保证完成。改为:
client.save(function(err,client){
OAuthClient.find({username:req.body.username}).exec(function(err, clients) {
if (err) {
}
//body of work
});
});
所有内容都来自.save()