Node.js 插入期间ID列错误

Node.js 插入期间ID列错误,node.js,objection.js,Node.js,Objection.js,当我尝试使用Node.js和objective.js作为ORM/db处理程序将新记录插入我的数据库(Postgres)时,会出现错误。我已经学习了教程,但是在他们当前的教程中我找不到这方面的内容 以下是我的错误: 调试到控制台时:错误:“id”列中的null值违反了非null约束 当通过邮递员收到错误时,例如(对于搜索引擎的搜索能力):错误:“id”列中的空值违反了非空约束 看起来“id”列被插入到了日志查询中的“null”值中;它不应该插入,因为它使用默认的序列值(在其他SQL解决方案中为自动

当我尝试使用Node.js和objective.js作为ORM/db处理程序将新记录插入我的数据库(Postgres)时,会出现错误。我已经学习了教程,但是在他们当前的教程中我找不到这方面的内容

以下是我的错误:

调试到控制台时:
错误:“id”列中的null值违反了非null约束

当通过邮递员收到错误时,例如(对于搜索引擎的搜索能力):
错误:“id”列中的空值违反了非空约束

看起来“id”列被插入到了日志查询中的“null”值中;它不应该插入,因为它使用默认的序列值(在其他SQL解决方案中为自动标识字段)


如何插入新实体?

事实证明,我在TypeScript/Javascript模型上将id默认为
null
,Objective.js希望不定义该属性

因此,请执行以下操作之一:

  • 不要创建属性(属性和值将
    未定义
  • 创建属性,但不要设置值(值将是未定义的)
  • 将该值设置为
    undefined
  • 删除
    属性
它将其设置为null的原因是我尝试的其他ORMs支持将其设置为null。Typeorm尤其允许将列标记为主列和生成列(这意味着它不尝试插入值;数据库的表定义负责创建值)。另外,其他非JS ORM也支持null或无效的id值,如零,以指示该对象在表中尚不存在,因此应插入(同样,通过各种方式指示该列既是
主列
又是
生成的