【问题标题】:Callback function in MoongoseMongoose 中的回调函数
【发布时间】: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());

【问题讨论】:

    标签: javascript mongoose callback


    【解决方案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() 将返回一个承诺。我已经更新了我的答案。
    猜你喜欢
    • 2017-08-28
    • 2013-02-22
    • 2015-09-19
    • 2012-12-28
    • 2015-04-08
    • 2016-11-20
    • 2014-07-19
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多