[英]Why sequelize.findOne() is not returning the result while I can see the result is in my DB
我正在尝试将一些数据保存到数据库中,但是我有一个条件,如果数据已经存在,请不要再次插入。
我为此任务创建了几个函数。 我可以毫无问题地将数据插入数据库。 但是,一旦我开始添加此现有数据检查条件,即使我只是将数据添加到DB中,findOne()函数看起来总是返回null。
要在数据库中运行插入操作的最高级别代码,saveInvoice(i)可以正常工作:
if (!this.checkInvoic(i)) {
this.saveInvoice(i)
}
用于检查发票数据是否已经存在的代码,结果应该是某些东西,但它为null:
checkInvoic(invoice) {
return this.checkSingleInvoice(invoice.team_id,
invoice.invoice_number)
.then((result) => { // this result should be something.
if (result !== undefined) {
return resolve(true);
} else {
return resolve(false);
}
})
}
这些是处理续集的功能:
create(invoice) {
return this.invoicesModel.create(invoice);
}
checkSingleInvoice(team_id, invoice_id) {
return this.invoicesModel.findOne({
where: {
invoice_id,
team_id,
}
})
}
我期望当我在checkSingleInvoice()函数中提供invoice.team_id和invoice.invoice_id时,它将返回数据库中存在的结果,并在checkInvoice()函数中返回true。 但是,当我运行它时,我对此有评论的行中的结果返回了null。 我只是想知道为什么? 我在Promise或Sequelize中做错了什么吗?
我认为您的问题是checkInvoic
(sic)返回Promise
,但是您的条件检查没有考虑到这一点。
有两个可能的修复:
1)使用await
if (await !this.checkInvoic(i)) {
this.saveInvoice(i)
}
2) then
使用:
this.checkInvoic(i).then(exists => {
if (!exists) return this.saveInvoice()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.