javascript - 嵌套回调异步运行

标签 javascript node.js asynchronous mongoose

如何克服此异步代码并在回调之间传递值?

这里的totalfee变量在第一个回调中设置,但在第二个回调中无法访问。

 var totalfee;
 SetFee.find({standard:standard}, function(error,document){
  totalfee = document[0].totalfee;
  CollectFee.find({ssn:ssn}, function(error,document){
        if(typeof(document[0])=='undefined'){
          let paidfee=0;
          var cfee = new CollectFee({
            ssn:ssn,
            paidfee:paidfee
          });
          cfee.save();
        }
        else {
          showpaid=document[0].paidfee;
          console.log(ssn,name,totalfee,showpaid);
          res.redirect('/fees/cfees?ssn='+ssn+'&name='+name+'&totalfee='+totalfee+'&paidfee='+showpaid);
        }
  });            
});

REFERENCE IMAGE

最佳答案

也许这些指针会引导您到达某个地方。

(1) 使用 findOne 因为您需要一个文档。

(2) 为变量使用更好的名称,例如文档不明确。

(3) 添加console.log语句进行调试。

(4) 检查 err 以查看是否出现任何错误可能是个好主意。通常错误仅在插入/更新/删除时发生。

SetFee.findOne({ standard: standard }, function (err, setFee) {
    console.log('setFee', setFee)
    let totalfee = setFee.totalfee;

    CollectFee.findOne({ ssn: ssn }, function (err, collectFee) {
        console.log('collectFee', collectFee)
        if (!collectFee) {
            // use of return is to stop the 'else' part from executing
            return CollectFee.create({ ssn: ssn, paidfee: 0 }, function (err, collectFee) {
                // do something here or your route handler will hang!
            });
        }
        let showpaid = collectFee.paidfee;
        console.log(ssn, name, totalfee, showpaid);
        res.redirect('/fees/cfees?ssn=' + ssn + '&name=' + name + '&totalfee=' + totalfee + '&paidfee=' + showpaid);
    });            
});

关于javascript - 嵌套回调异步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631025/

相关文章:

windows - (UWP) WebClient 和从 URL 下载数据

web-services - 限制并发Web Service请求(或某些批处理方法)

javascript - Promise.all() 等待对象属性的返回

php - 如何使用 PHP 更新数据库中员工的电话号码

javascript - 如何使用 jQuery 将数字输入存储到变量中并执行计算以再次更新数字输入?

javascript - 如何在 postman 中比较响应与全局变量

javascript - Joi - not.exist()?

node.js - Node.js 应用程序中两个并发请求混合在一起

node.js - Phantom JS for Node,使用打印样式表?

arrays - 如何在nodejs中使用mongoose将值推送到特定的数组索引?