尝试使用带有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解决方案中)。
如何插入新实体?
答案 0 :(得分:0)
事实证明我在TypeScript / Javascript模型上将id默认为null
,并且Objection.js期望不定义该属性。
请执行以下操作之一:
undefined
)undefined
)undefined
delete
财产将其设置为null的原因是因为我尝试支持的其他ORM将其设置为null。特别是,Typeorm允许将列标记为Primary和Generated列(意味着它不会尝试插入值;数据库的表定义负责创建值)。此外,其他非JS ORM也支持null或无效的id值,例如零,以指示该对象在表中尚不存在,因此应插入(同样,应用方式指示列是primary
和generated
)。