Node.js SailsJS:设置autoPK:false仍然会生成mongodb';s id属性

Node.js SailsJS:设置autoPK:false仍然会生成mongodb';s id属性,node.js,mongodb,sails.js,waterline,sails-mongo,Node.js,Mongodb,Sails.js,Waterline,Sails Mongo,使用SailsJS,我试图找出如何使用自定义主键作为自动递增的整数 为此,我传递了autoPK:false,但我看到mongo仍然将其“id”字段与UUID一起使用,就好像Waterline忽略了我的autoPK条目一样 例如,我定义了这个模型(为mongodb配置) 下面是来自sails控制台的输出: sails> User.create({name:'Mike'}).exec(console.log) undefined sails> null { name: 'Mike',

使用SailsJS,我试图找出如何使用自定义主键作为自动递增的整数

为此,我传递了
autoPK:false
,但我看到mongo仍然将其“id”字段与UUID一起使用,就好像Waterline忽略了我的autoPK条目一样

例如,我定义了这个模型(为mongodb配置)

下面是来自sails控制台的输出:

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'

谢谢

  • Mongo的帆自动增量不能依次为1、2、3等。它将始终是Mongo的
    ObjectId
  • id
    字段在Sails中是必需的,因为许多惯例仍然使用它。注意蓝图操作、actionUtil等
  • 下面是我的解决方案,使用此模型配置:

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

    它仍然不会在Mongo中生成
    personalId
    作为列名,但它将使用Mongo的默认id约定,即
    \u id
    personalId
    将在您将数据库切换到另一个数据库(如MySQL)时生成。

    我认为mongo总是有一个id字段what@TravisWebb是的,但是sails将键/列映射到它自己的名称(您甚至可以使用属性的
    columnName
    键指定),请注意它如何称为“id”而不是“id”,此输出来自
    sails控制台
    ,而不是通过
    mongo
    命令。您将如何在mongo和mysql中搜索具有ID的内容?
    module.exports = {
      autoPK: false,
      attributes: {
        name:'string',
        id: {,
          autoIncrement:true,
          primaryKey: true,
          columnName: 'personalId'
        }
      }
    }