mongodb find()在node.js中返回空结果

时间:2014-07-23 07:41:01

标签: javascript node.js mongodb

在我的节点应用程序中,我使用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'}) 结果即将到来,但上面的代码返回空数组。帮我解决这个问题。提前谢谢..

1 个答案:

答案 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()

的回调