waterline-model.create - primaryKey
我有以下带有主键 ID 的模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 | attributes: { id: { type: 'integer', autoIncrement: true, primaryKey: true, unique: true }, name: { type: 'string', unique: true, required: true }, } |
我正在创建如下模型:
1 2 3 4 | var model = { id: undefined, name: 'name', }; |
waterlinemodel.create(model).exec(function(error, result) {});
但它会引发以下错误:
错误 (E_UNKNOWN) 遇到意外错误] 详细信息:错误:列 "id" 中的空值违反非空约束
因为,\\'id\\'是主键,水线不应该看\\'id\\'属性的值是什么。
如何解决这个错误?我不想删除\\'id\\',因为我已经为模型创建了值对象,它包含模型的所有属性。我正在根据需要设置值对象属性。我不需要为创建设置 id 属性。
我遇到了完全相同的问题,尤其是配置为使用 postgresql 的模型。将其设置为磁盘或内存时,会创建资源,但使用 postgresql 时不会创建资源并出现非空约束错误。
无论我是否设置了
2019答??案
Sails.js 具有在
1 2 3 4 5 | attributes: { createdAt: { type: 'number', autoCreatedAt: true, }, updatedAt: { type: 'number', autoUpdatedAt: true, }, id: { type: 'number', autoIncrement: true, }, } |
另外,默认的
1 2 3 4 5 6 7 8 9 10 11 | module.exports = { primaryKey: 'name', attributes: { name: { type: 'string', unique: true, required: true }, // ... }, } |
请注意,我将
此外,如果您想禁用
1 2 3 4 5 6 7 8 9 10 11 12 | module.exports = { primaryKey: 'name', attributes: { id: false, name: { type: 'string', unique: true, required: true }, // ... }, } |
正如文档所说:
1 2 3 4 5 6 7 8 9 | Will set the primary key of the record. This should be used when autoPK is set to false. attributes: { uuid: { type: 'string', primaryKey: true, required: true } } |
你需要在你的模型上设置
文档链接:https://github.com/balderdashy/waterline-docs/blob/master/models.md#primarykey