Node.js Sequelize:isNewRecord始终为false 问题
我有一个名为Node.js Sequelize:isNewRecord始终为false 问题,node.js,database,sqlite,sequelize.js,Node.js,Database,Sqlite,Sequelize.js,我有一个名为Test的Sequelize模型,它有一个唯一的字段:value(主键)。我正在使用SQLite作为数据库管理系统 如果我使用ignoreDuplicates:true作为bulkCreate()的选项,它应该bulkCreate将忽略数据库中存在的新插入。这很好,但是方法bulkCreate()返回的数组的所有对象总是将isNewRecord属性设置为false,即使在数据库中插入了新记录 const user = new User({ ...userData }); consol
Test
的Sequelize模型,它有一个唯一的字段:value
(主键)。我正在使用SQLite作为数据库管理系统
如果我使用ignoreDuplicates:true
作为bulkCreate()
的选项,它应该bulkCreate
将忽略数据库中存在的新插入。这很好,但是方法bulkCreate()
返回的数组的所有对象总是将isNewRecord
属性设置为false
,即使在数据库中插入了新记录
const user = new User({ ...userData });
console.log(user.isNewRecord); // true
await user.save();
console.log(user.isNewRecord); // false
代码
const items=[{value:'a'},{value:'b'}];//要保存在数据库上的项目。
常量结果=等待测试。批量创建(项{
ignoreDuplicates:true//忽略重复记录
});
在第一次执行bulkCreate()
且数据库为空后,的值将产生以下结果
:
[
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
。我错过了什么
环境
- Windows10Pro
- nodejsv12.16.2
:6.3.3续集
:5.0.0sqlite3
isNewRecord
忽略重复项
:
如果数据库中不存在模型实例,
isNewRecord
字段为true
const user = new User({ ...userData });
console.log(user.isNewRecord); // true
await user.save();
console.log(user.isNewRecord); // false
您需要访问
\u options.isNewRecord
因为这表明,只有当实例尚未持久化到数据库时,isNewRecord
才会设置为true
const user = new User({ ...userData });
console.log(user.isNewRecord); // true
await user.save();
console.log(user.isNewRecord); // false
在您的情况下,因为您已经保存了实例(第一次或第二次,这无关紧要,您已经保存了实例),所以isNewRecord
被设置为false
正如我上面提到的,如果您想检查您的实例是否第一次保存,请访问
\u options.isNewRecord
哪里是\u options
?