我正在试用SailsJS的测试版(v1.0.0-32),在配置自定义ID时遇到了一些问题。 Bellow你会找到我目前的配置:
modelExample.js
module.exports = {
attributes: {
id:{
type: 'string',
columnName: '_id'
},
attr: {
type: 'number'
}
}
}
模型配置config/models.js
attributes: {
createdAt: { type: 'number', autoCreatedAt: true, },
updatedAt: { type: 'number', autoUpdatedAt: true, },
id: { type: 'string', columnName: '_id' },
}
试图插入的元素:
{id:"600000", attr:40}
尝试创建一个包含在尝试创建的元素中的属性“id”的记录时,我得到error
:
AdapterError: Unexpected error from database adapter: Invalid primary key value provided for `id`. Cannot interpret `600000` as a Mongo id.
(Usually, this is the result of a bug in application logic.)
似乎mongo不喜欢字符串600000
作为id
,但我不确定是否可能误解了与mongo中的id相关的内容。在旧版本的帆中,我从来没有遇到过这个问题,因为id覆盖是直截了当的。
有关更多信息,sails-mongo适配器版本为:"sails-mongo": "^1.0.0-5"
答案 0 :(得分:2)
为了在Sails 1.0中使用带有sails-mongo
的非ObjectID主键,您必须在模型中设置dontUseObjectIds: true
,例如:
// api/models/User.js
module.exports = {
dontUseObjectIds: true,
attributes: {
id: { type: 'number', columnName: '_id' }, // <-- still need to set `columnName`!
name: { type: 'string' },
...etc...
}
}
这是从sails-mongo
v1.0.0-7开始实施的。