Javascript Mongoose findOne基于另一个文档,导致未处理的承诺拒绝错误

Javascript Mongoose findOne基于另一个文档,导致未处理的承诺拒绝错误,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我的应用程序有一个MongoDB,其中有一个集合,是某个员工等级的工资带数据。我试图拉一个特定等级的工资带,以及下一个等级的工资带,但是我得到了一个未处理的拒绝承诺错误 我的考试是找C.London,我需要得到C.London和B.London的工资等级。数据库中的文档如下所示: { "_id" : ObjectId("5c1cafe41d134100196750fa"), "gradeName" : "C.London", "minimum" : 53600, "midpoint" : 765

我的应用程序有一个MongoDB,其中有一个集合,是某个员工等级的工资带数据。我试图拉一个特定等级的工资带,以及下一个等级的工资带,但是我得到了一个未处理的拒绝承诺错误

我的考试是找
C.London
,我需要得到
C.London
B.London
的工资等级。数据库中的文档如下所示:

{ "_id" : ObjectId("5c1cafe41d134100196750fa"), "gradeName" : "C.London", "minimum" : 53600, "midpoint" : 76550, "maximum" : 99500, "nextGrade" : "B.London", "__v" : 0 }
{ "_id" : ObjectId("5c1cafe41d134100196750de"), "gradeName" : "B.London", "minimum" : 53600, "midpoint" : 76550, "maximum" : 99500, "nextGrade" : "null", "__v" : 0 }
获取值的代码段为:

// Get Pay bands
  let currentPayBand = await db.PayBand.findOne({
    gradeName: targetEmployee.grade
  });

  console.log(currentPayBand);

  if (currentPayBand.nextGrade) {
    let nextPayBand = await db.PayBand.findOne({
      gradeName: currentPayBand.nextGrade
    });
  } else {
    const nextPayBand = {
      minimum: null,
      midpoint: null,
      maximum: null
    }
  }

  console.log(nextPayBand);
它正在正确地查找
currentPayBand
,因为console.log显示正确,但随后出现以下错误:


(节点:25)未处理的Promisejection警告:未处理的承诺拒绝(拒绝id:1):引用错误:未定义nextPayBand

您正在访问if外部的局部变量。您可以在if条件下这样做或处理

let nextPayBand = null

if (currentPayBand.nextGrade) {
  nextPayBand = await db.PayBand.findOne({
    gradeName: currentPayBand.nextGrade
  });
}
else {
  const nextPayBand = {
    minimum: null,
    midpoint: null,
    maximum: null
  }
}

console.log(nextPayBand)

太简单了!我已经做了一点小小的调整,用你的方法摆脱了我的
else
语句,它似乎起到了作用。将提交对解决方案的编辑以反映这一点。