2013-01-13 194 views
0

如果我console.log count + 1的輸出,我會得到一個正確的數字值。如果我輸出note.note_id的值,我會得到未定義的值。爲什麼是這樣?未定義的返回值

我已經嘗試將設置值設置爲函數內的預定義值。

note.note_id = db.notes.count(function(err, count) { 
    return count + 1; 
}); 
+0

我們需要看到更多的上下文 - 例如,db.notes.count是做什麼的?既然它是*那*函數,而不是你已經顯示的表達式中的函數,它將決定什麼'note.note_id'回來。 –

+0

這是MongoDB的一個函數(註釋是我的集合):http://docs.mongodb.org/manual/reference/method/db.collection.count/ – Sampsa

回答

4

很難回答不知道什麼db.notes是,但它似乎有什麼東西訪問數據庫。這意味着它很可能是異步的,意味着count()方法永遠不會返回值,但您需要對回調中的結果執行任何操作。

db.notes.count(function(err, count) { 
    note.note_id = count + 1; 
    // do more stuff here 
}); 
// do NOT do stuff here. it will run BEFORE the callback has been executed 
+0

我看,這有潛力。在該函數有時間設置之前,我將它保存到數據庫中。 – Sampsa

+0

你說得對。回調沒有完成,所以當我將對象保存到數據庫時,返回值是「未定義的」。我將保存到回調中,解決了問題。謝謝! – Sampsa