SailsJS:设置 autoPK:false 仍然会生成 mongodb 的 id 属性

SailsJS: Setting autoPK:false still generates mongodb's id attribute

使用 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'

谢谢。

  1. Mongo在Sails中的自增不能依次为1、2、3等,永远是Mongo的ObjectId.
  2. id Sails 中的字段是必需的,因为许多约定仍在使用它。关注蓝图操作、actionUtil 等

所以这是我的解决方案,使用这个模型配置:

module.exports = {
  autoPK: false,
  attributes: {
    name:'string',
    id: {,
      autoIncrement:true,
      primaryKey: true,
      columnName: 'personalId'
    }
  }
}

它仍然不会生成 personalId 作为 Mongo 中的列名,但它将使用 Mongo 的默认 ID 约定,即 _idpersonalId 如果您将数据库切换到另一个数据库,如 MySQL,将生成