Sails v1.0:在 mongo 中使用自定义主键时出错

Sails v1.0: error while using custom primary key with mongo

我正在试用 SailsJS 的测试版 (v1.0.0-32),但在配置自定义 ID 时遇到了一些问题。您会在下面找到我当前的配置:

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}

我在尝试创建记录时得到的 error 属性 "id" 包含在尝试创建的元素中:

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,但我不确定我是否误解了 [=38 中与 id 相关的内容=].在旧版本的 sails 中,我从来没有遇到过这个问题,因为 id 覆盖很简单。

更多信息,sails-mongo适配器版本为:"sails-mongo": "^1.0.0-5"

为了在 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 开始实现的。