Mongoose 中的回调函数

Posted

技术标签:

【中文标题】Mongoose 中的回调函数【英文标题】:Callback function in Moongose 【发布时间】:2016-08-09 15:45:36 【问题描述】:

有没有在带有回调函数的函数中返回一个值?

function getnextseq()    
 autoincrement.findOneAndUpdate( _id:"userid",  $inc:  seq:1,function(err,data)
console.log(data.seq)
)
return data.seq;

console.log(getnextseq());

【问题讨论】:

【参考方案1】:

简单地返回 data.seq 将不起作用,因为 findOneAndUpdate 是异步的。你需要传递一个回调函数或使用promise

function getnextseq(cb)     
 autoincrement.findOneAndUpdate( _id:"userid",  $inc:  seq:1,function(err,data)
   cb(data.seq);
 )



getnextseq(function(seq) 
   console.log(seq);
 
);

或承诺方式

 function getnextseq()     
    return autoincrement.findOneAndUpdate( _id:"userid",  $inc:  seq:1).exec();
 



 getnextseq().then(function(seq) 
   console.log(seq)
 );

【讨论】:

如何使用 Promise 传递这个? exec() 将返回一个承诺。我已经更新了我的答案。

以上是关于Mongoose 中的回调函数的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 回调函数如何知道第二个参数是啥 db.query 结果?

Mongoose - 通过回调函数返回设置虚拟

Mongoose 回调应用不是一个函数

mongoose、express 和 node.js 中回调函数的参数

未捕获从 mongoose-promise 回调函数抛出的错误

countDocuments Mongoose 的问题:它实际上并没有等待回调函数执行