插入期间的ID列错误

时间:2018-05-29 18:12:26

标签: node.js objection.js

尝试使用带有Objection.js的Node.js作为ORM / db处理程序将新记录插入我的数据库(Postgres)时出错。我已经按照教程进行了操作,但我在当前的docs中找不到这一点。

以下是我的错误:

调试控制台时:error: null value in column "id" violates not-null constraint

通过Postman收到错误时,例如(用于搜索引擎的可搜索性):error: null value in column "id" violates not-null constraint

看起来'id'列正在插入到来自记录查询的'null'值;它根本不应该插入,因为它使用默认序列值(自动标识字段,在其他SQL解决方案中)。

如何插入新实体?

1 个答案:

答案 0 :(得分:0)

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

请执行以下操作之一:

  • 不要创建属性(属性,因此值,将为undefined
  • 创建属性,但不要设置值(值为undefined
  • 将值设置为undefined
  • delete财产

将其设置为null的原因是因为我尝试支持的其他ORM将其设置为null。特别是,Typeorm允许将列标记为Primary和Generated列(意味着它不会尝试插入值;数据库的表定义负责创建值)。此外,其他非JS ORM也支持null或无效的id值,例如零,以指示该对象在表中尚不存在,因此应插入(同样,应用方式指示列是primarygenerated)。