Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Sequelize:isNewRecord始终为false 问题_Node.js_Database_Sqlite_Sequelize.js - Fatal编程技术网

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
  • sqlite3
    :5.0.0
续集文档
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