我的应用程序有一个 MongoDB,其中有一个集合,其中包含特定员工级别的薪资数据。我试图拉动特定年级和下一个年级的薪资范围,但出现了未处理的 promise 拒绝错误。
我的测试正在寻找等级 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 正确输出,但随后出现以下错误:
( Node :25)UnhandledPromiseRejectionWarning:未处理的 promise 拒绝(拒绝 ID:1):ReferenceError: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)
关于javascript - Mongoose findOne 基于另一个文档导致未处理的 Promise Rejection 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54023255/