簡體   English   中英

Node js Mongodb findOne無法同步工作

[英]Node js Mongodb findOne not working Synchronously

我有一個包含用戶和令牌列表的mongodb數據庫。 當我使用查詢來查找帶有查詢的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

您可以做的是將同步代碼放入findOne的回調中。 例如:

collection.findOne({'user':user}, function(error,user) {    
     //Synchornous code here
})

希望我的回答對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM