gpt4 book ai didi

node.js - Sequelize : isNewRecord is always false

转载 作者:行者123 更新时间:2023-12-03 22:16:42 27 4
gpt4 key购买 nike

问题

我有一个名为 TestSequelize 模型,它有一个唯一字段:value(主键)。我使用 SQLite 作为数据库管理系统。

如果我使用 ignoreDuplicates: true 作为 bulkCreate() 的选项,则应该 bulkCreate 将忽略数据库中存在的新插入.这很好用,但是方法 bulkCreate() 返回的数组的所有对象总是将 isNewRecord 属性设置为 false,即使当在数据库中插入了一条新记录。

代码

const items = [ {value: 'a'}, {value: 'b'} ]; // Items to save on database.

const results = await Test.bulkCreate(items, {
ignoreDuplicates: true // Ignore duplicate records
});

bulkCreate()第一次执行后数据库为空,results的值:

[
Test {
dataValues: {
value: 'a',
createdAt: 2020-07-12T12:01:08.695Z,
updatedAt: 2020-07-12T12:01:08.695Z
},
_previousDataValues: {
value: 'a',
createdAt: 2020-07-12T12:01:08.695Z,
updatedAt: 2020-07-12T12:01:08.695Z
},
_changed: Set {},
_options: {
isNewRecord: true,
_schema: null,
_schemaDelimiter: '',
include: undefined
},
isNewRecord: false
},
Test {
dataValues: {
value: 'b',
createdAt: 2020-07-12T12:01:08.695Z,
updatedAt: 2020-07-12T12:01:08.695Z
},
_previousDataValues: {
value: 'b',
createdAt: 2020-07-12T12:01:08.695Z,
updatedAt: 2020-07-12T12:01:08.695Z
},
_changed: Set {},
_options: {
isNewRecord: true,
_schema: null,
_schemaDelimiter: '',
include: undefined
},
isNewRecord: false
}
]

我希望在第一次执行时所有 isNewRecord 都为 true。我错过了什么?

环境

  • Windows 10 专业版
  • NodeJS v12.16.2
  • Sequelize :6.3.3
  • sqlite3:5.0.0

Sequelize 文档

Model

isNewRecord :

enter image description here

bulkCreate()

ignoreDuplicates :

enter image description here

最佳答案

您需要访问 _options.isNewRecord

因为这个issue声明 isNewRecord 仅在实例尚未持久保存到数据库时才设置为 true。

在你的例子中,因为你已经保存了实例(第一次或第二次,没关系,你已经保存了)所以 isNewRecord 被设置为 false。

所以正如我上面提到的,如果您想检查您的实例是否只是第一次保存,请访问 _options.isNewRecord

关于node.js - Sequelize : isNewRecord is always false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62861114/

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