使用SailsJS,我试图找出如何使用自动递增的自定义主键作为整数。
为此,我通过autoPK:false
,但我看到mongo仍然使用UUID的'id'字段,就好像Waterline忽略了我的 autoPK 条目。
例如,我定义了这个模型(为mongodb配置)
module.exports = {
autoPK: false,
attributes: {
name:'string',
personalId: {
type: 'integer',
autoIncrement:true,
primaryKey: true
}
}
}
以下是sails console
的输出:
sails> User.create({name:'Mike'}).exec(console.log)
undefined
sails> null { name: 'Mike',
createdAt: Fri Mar 27 2015 22:11:51 GMT+0300 (IDT),
updatedAt: Fri Mar 27 2015 22:11:51 GMT+0300 (IDT),
id: '5515ab77ac1085260b221cfd' }
我希望看到personalId:1
或类似的内容,而不是id:'5515ab77ac1085260b221cfd'
。
感谢。
答案 0 :(得分:2)
ObjectId
。id
字段是必要的,因为许多约定仍然使用它。照看蓝图动作,actionUtil等。所以这是我的解决方案,请使用此模型配置:
module.exports = {
autoPK: false,
attributes: {
name:'string',
id: {,
autoIncrement:true,
primaryKey: true,
columnName: 'personalId'
}
}
}
它仍然不会在Mongo中生成personalId
作为列名,但它将使用Mongo的默认id约定_id
。如果您将数据库切换到另一个数据库(如MySQL),将生成personalId
。