【发布时间】:2019-08-29 04:11:20
【问题描述】:
我正在尝试将一些数据保存到我的数据库中,但我有一个条件,如果数据已经存在,请不要再次插入。
我为此任务创建了几个函数。我可以毫无问题地将数据插入我的数据库。但是一旦我开始添加这个现有的数据检查条件,看起来 findOne() 函数总是返回 null,即使我只是将数据添加到 DB 中。
运行插入数据库的最高级别代码,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 中做错了吗?
【问题讨论】:
-
能否提供发票模型的字段名称?
-
@Sergii Vorobei const InvoicesModel = connection.define('invoices', { invoice_id:{ primaryKey: true, type: Sequalize.INTEGER, allowNull: false, autoIncrement: true, }, team_id:{ type : Sequalize.UUID, allowNull: false, }, invoice_number:{ type: Sequalize.TEXT, allowNull: false, },
-
当您调用
this.checkSingleInvoice时,您传递了invoice.invoice_number,但在findOne的函数内部,您将其用作invoice_id。考虑到这些是不同的领域,这可能是根本原因吗? -
@Sergii Vorobei 数据模型应该不是问题,因为我可以将数据插入到数据库中,这出问题了。问题是我可以在数据库中找到数据,即使它就在那里。
-
@@Sergii Vorobei 是的,这正是根本原因。我是个白痴。谢谢先生。
标签: javascript node.js promise sequelize.js