gpt4 book ai didi

javascript - 为什么sequelize.findOne() 没有返回结果,而我可以看到结果在我的数据库中

转载 作者:行者123 更新时间:2023-12-02 23:03:28 26 4
gpt4 key购买 nike

我正在尝试将一些数据保存到我的数据库中,但我有一个条件,如果数据已经存在,则不要再次插入。

我为此任务创建了几个函数。我可以毫无问题地将数据插入数据库。但是一旦我开始添加这个现有的数据检查条件,看起来 findOne() 函数总是返回 null,即使我只是将数据添加到数据库中。

运行插入数据库的最高级别代码,saveInvoice(i) 正在工作:

if (!this.checkInvoic(i)) {
this.saveInvoice(i)
}

检查发票数据是否已存在的代码,结果应该是一些东西,但它是空的:

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);
}
})
}

这些是处理sequelize的函数:

create(invoice) {
return this.invoicesModel.create(invoice);
}

checkSingleInvoice(team_id, invoice_id) {
return this.invoicesModel.findOne({
where: {
invoice_id,
team_id,
}
})
}

我期望当我将invoice.team_id和invoice.invoice_id提供给checkSingleInvoice()函数时,它将返回数据库中存在的结果,并在checkInvoice()函数中返回true。但是当我运行它时,我有评论的行中的结果返回 null。我只是想知道为什么?这是我在 Promise 或 Sequelize 中做错的事情吗?

最佳答案

我认为您的问题是 checkInvoic (原文如此)返回一个 Promise,但您的条件检查没有考虑到这一点。

有两种可能的修复方法:

1) 使用await

if (await !this.checkInvoic(i)) {
this.saveInvoice(i)
}

2)使用then:

this.checkInvoic(i).then(exists => {
if (!exists) return this.saveInvoice()
}

关于javascript - 为什么sequelize.findOne() 没有返回结果,而我可以看到结果在我的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57699254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com