javascript - Node js Mongodb findOne 不同步工作

标签 javascript node.js mongodb mongodb-query

我有一个 mongodb 数据库,其中包含用户和 token 列表。当我使用查询来查找带有查询的findOne时,它返回未定义。 findOne的代码如下:

var getApiTokenForUser = function(user){
console.log('get api token for :'+user);
var collection = db.collection(user_token_collection_name);
var result;
if(collection){
    console.log("cursor query: "+user);
    var cursor = collection.findOne({'user':user});
    console.log("cursor result: "+JSON.stringify(cursor));
}
return result;}

我为findOne打印的日志如下:

 get api token for :Zeus
 cursor query: Zeus
 cursor result: {}
 getApiTokenForUser return: undefined

但是,如果我使用 find 而不是 findOne,我可以获得用户列表,但仅在日志中,它仍然返回未定义。

查找代码是:

var getApiTokenForUser = function(user){
console.log('get api token for :'+user);
var collection = db.collection(user_token_collection_name);
var result;
if(collection){
    console.log("cursor query: "+user);
    var cursor = collection.find({'user':user});
    cursor.forEach(function(data) {
        result = data;
        console.log("cursor result: "+JSON.stringify(data));
    });
}
return result;}

日志是:

cursor query: Zeus
getApiTokenForUser return: undefined
saveUserApiToken
cursor result: {"_id":"58a56442545e812a68f87bbe","user":"Zeus","token":"eyJhbGci
OiJIUzI1NiJ9.WmV1cw.mAQh65o-d2tOp_Fchi7iPm5pu_2f4QSXOAQ5JtoEe10"}

我希望 findOne 能够同步工作。有什么办法吗?

最佳答案

您永远不会将结果分配给第一个片段中的任何内容。您的代码(简化):

var result; // you never assign anything to it
return result; // undefined

关于javascript - Node js Mongodb findOne 不同步工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268769/

相关文章:

javascript - 如何优雅地重新连接websocket?

javascript - 使用 IronRouter/MeteorJS 在 Bootstrap Modal 中提交表单

javascript - gulp-watch 触发的任务失败时如何捕获异常?

node.js - MongoDB:带有嵌套 $group 的聚合

javascript - 如何在不手动指定帧的情况下在 Craftyjs 中使用多行 Sprite 表

javascript - 预期响应包含一个数组但得到一个对象

Node.js 内置加密货币 : RSA Decryption

node.js - 使用 NodeJS 连接接收文件

javascript - meteor ,mongodb 中正则表达式的问题

python - 当我尝试使用 None 作为查询的 null 时,PyMongo NoneType 错误