2014-04-29 15 views
-1

我有這個問題:我想通過代碼獲取下一個序列號,但它總是說「未定義」。從mongodb allways得到sequnce號碼undefined

任何幫助將是爐排:)

我以前做這在我的MongoDB:

db.PresentationCollection.insert(
    { 
     _id: "editorID", 
     seq: 0 
    } 
) 

我的代碼(名稱是editorID):

function getNextSequence(name, db) { 

    var collection = db.get('PresentationCollection'); 

    var ret = collection.findAndModify(
      { 
       query: { _id: name }, 
       update: { $inc: { seq: 1 } }, 
       new: true 
      } 
    ); 

    return ret.seq; 
} 

回答

0

你錯過了回電話。基於回調的異步函數通常不會返回任何有意義的內容。請參閱節點綁定自述文件中關於findAndModify的文檔。

+0

0123對不起,我想我的語法錯誤,你能寫一些有用的東西嗎? – eran10

0

我從下面這個鏈接同樣的問題,這的確是被指定不回調,你的代碼不等待返回的結果 - mongo db documents create auto increment

這裏是我做過什麼來解決這個問題。請記住,我使用Q來承諾幫助,但您可以直接使用JavaScript承諾。

function _getNextSequence(name) { 
    var deferred = Q.defer(); 
    db.counters.findAndModify(
    { _id: name }, //query 
    [], //sort 
    { $inc: { seq: 1 } }, //update 
    { new:true }, //options 
    function(err, doc) { //callback 
     if (err) deferred.reject(err.name + ': ' + err.message); 
     if (doc){ 
     deferred.resolve(doc.value.seq); 
     } 
    }); 
    return deferred.promise; 
}