使用mongo自定义主键时出现错误v1.0:错误

时间:2017-03-24 15:43:41

标签: sails.js sails-mongo

我正在试用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"

1 个答案:

答案 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开始实施的。