我试图通过代码获取下一个序列号,但它总是说“未定义”。
我之前在我的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 :(得分:0)
你错过了回调。基于回调的异步函数通常不会返回任何有意义的内容。请参阅节点绑定自述文件中的findAndModify文档。
答案 1 :(得分: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;
}