繁体   English   中英

为什么当我看到结果在我的数据库中时,sequelize.findOne()没有返回结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM