2014-04-29 3 views
-1

У меня есть эта проблема: я пытаюсь получить по коду следующий порядковый номер, но он всегда говорит «undefined».Получение sequnce номер от mongodb allways 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

не работает для меня, я думаю, что ошибаюсь с синтаксисом, можете ли вы написать здесь что-то, что работает? – 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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^