Javascript Sequelize返回值

Javascript Sequelize返回值,javascript,sequelize.js,Javascript,Sequelize.js,下面的代码是通过将实际费用减去已支付的金额来获得到期金额。我得到的值返回为null,而不是difference。当我为db.XXX.findOne添加return时,我得到的错误是“无效值承诺”。请帮我理解我哪里出错了 let x=getDueAmount(1,200); const getDueAmount = (id,amountpaid) => { let due; db.XXX.findOne({ where:{id: id}, attributes:['

下面的代码是通过将实际费用减去已支付的金额来获得到期金额。我得到的值返回为null,而不是difference。当我为db.XXX.findOne添加return时,我得到的错误是“无效值承诺”。请帮我理解我哪里出错了

let x=getDueAmount(1,200);

const getDueAmount = (id,amountpaid) => {
  let due;
  db.XXX.findOne({
    where:{id: id},
    attributes:['fees']
   }).then(feeDetail=>{
      due=feeDetail.fees-amountpaid;
       });
   return due;
}

只需从您的承诺(您的Db呼叫)返回即可。在代码中,在db返回结果之前,返回
due
的值。阅读承诺和异步javascript

let x=getDueAmount(1,200);

const getDueAmount = (id,amountpaid) => {
  return db.XXX.findOne({
    where:{id: id},
    attributes:['fees']
   }).then(feeDetail=>{
     return feeDetail.fees-amountpaid;
   });
}

异步函数必须在整个过程中保持异步。从该函数返回一个承诺,而不是
到期
,因为它不会及时填充。如有问题的评论中所述,可能重复,我尝试了您提到的相同方法,得到了“无效数据承诺”。更重要的是,我在这里收到的值将被分配给一个对象,该对象是另一个sequelize查询结果的一部分。我不确定在这种情况下是否会出现这种情况。不,您显示的代码返回的时间超出了承诺。你试过我的密码了吗?如果您想在另一个查询中使用返回的值,那么它需要沿着链。我只能从您问题中的代码中假设您不理解承诺/异步代码