Node.js 使用Sequelize和SQLite获取新条目的ID,而不使用自动增量

Node.js 使用Sequelize和SQLite获取新条目的ID,而不使用自动增量,node.js,sqlite,sequelize.js,Node.js,Sqlite,Sequelize.js,我想将Node.js与Sequelize和SQLite一起使用。我为用户提供了以下模型: const User = sequelize.define('user', { rowid: { type: 'INTEGER', primaryKey: true, }, // other properties }); 如果我现在执行const newUser=wait User.create({/*properties*/}),我希望能够使用newUser.rowid访问新

我想将Node.js与Sequelize和SQLite一起使用。我为用户提供了以下模型:

const User = sequelize.define('user', {
  rowid: {
    type: 'INTEGER',
    primaryKey: true,
  },
  // other properties
});
如果我现在执行
const newUser=wait User.create({/*properties*/})
,我希望能够使用
newUser.rowid
访问新用户的ID。但事实并非如此,除非我在规范中添加了
autoIncrement:true
。接下来,我不想这样做。还有其他的可能性吗

编辑
事实证明,只有在不使用
autoIncrement:true
的情况下创建表,然后将其添加到列定义中,才能实现这一点。更实用的方法可能是只使用autoincrement,性能降低对大多数小型应用程序来说并不重要。

您不必使用
autoincrement
来访问表
用户
中的
rowid
。我希望看到它是这样的
User.rowid
而不是像示例中那样
newUser.rowid
,因为表名(显然)是
User

也可以从sqlite文档:

如果rowid表的主键由单个列组成 该列的声明类型在以下任意组合中都是“整数” 大写和小写,则该列将成为rowid的别名。 这种列通常称为“整数主键”。A. 主键列仅在声明 类型名正好是“整数”

和最后,您可能会考虑与PK不同的名称而不是代码> RoWID,因为SQLite已经有了<代码> RoWID.P/> 除了没有ROWID表之外,SQLite表中的所有行都有一个 64位有符号整数键,唯一标识其内部的行 桌子这个整数通常称为“rowid”。可以使用rowid值 可以使用一个特殊的独立于大小写的名称“rowid”访问, “oid”或“rowid”代替列名。如果表包含 名为“rowid”、“oid”或“rowid”的用户定义列,然后是该名称 始终引用显式声明的列,不能用于 检索整数rowid值


谢谢你的帮助。一般来说,问题不是访问
rowid
,而是在创建新用户后直接访问它,而不用使用
find
之类的方法重新加载它。事实证明,这是不可能的,因为如果设置了
autoIncrement
,Sequelize只会将主键替换为
lastInsertId
。@FelixSchütz你从哪里得到这个信息的“因为Sequelize只会在设置了autoIncrement的情况下将主键替换为lastInsertId。”我检查了他们的文档,但找不到它。我正面临着我在这里提出的同样的问题。@Qiulang我只是尝试了以下几点:1。从架构中创建一个不带自动增量的表。数据库中存储的架构没有自动增量集,并且在创建条目后未设置主键。2.从没有自动增量的模式创建表,然后启用自动增量。数据库中存储的模式没有自动增量集,但主键是在创建条目后设置的。3.从具有自动增量的架构创建表。数据库中存储的模式设置了自动增量,并且在创建条目后设置了主键。