5

我的 SailsJS 应用程序中有以下模型,我想在字段“room_name”和“school_id”上添加复合唯一键。

我目前做的是从 mongo 运行这个命令:

 db.room.ensureIndex({'room_name': 1, 'school_id':1}, {unique: true})

问题 1 我做得对吗?

问题 2 是否可以修改我的模型,使其自动调用此命令而无需手动修改 mongodb(来自 mongo 命令行)?

这是模型

module.exports = {

    schema: true,

    attributes: {

        room_name: {
            type: 'string',
            required: true
        },

        school_id: {
            type: 'string',
            required: true
        },

        children_count: {
            type: 'integer',
            required: true
        }
    }
   }
4

4 回答 4

4

我创建了一个sails hook,为使用sails-mongo 适配器的模型提供高级索引选项。

支持所有 mongo 索引选项。

https://www.npmjs.com/package/sails-hook-mongoat

于 2015-05-26T21:28:16.477 回答
3

Sails 目前(从 v0.10 开始)不支持多键索引,尽管它在我们的雷达上。就目前而言,您这样做的方式——通过直接在 Mongo 控制台中指定索引——是正确的(也是唯一的)方式。

于 2014-04-07T04:40:06.623 回答
1

船长日志,星号 -303842.4081367327(2019 年 2 月 27 日)。我们的目标是框架 Sails 1.0x。

即使 Sails 1.0x/Waterline 支持模型中的 MongoDB 复合索引声明(我不确定),在生产中部署应用程序时,索引不会自动创建......可悲但真实:(

考虑到这一点...

问题 1 - 我做得对吗?

是的,您是...索引有点复杂,有时您需要在生产环境中更改它们,因此有时需要手动进行。

问题 2 - 自动创建索引

是的......手工做可以自动完成的事情是甜甜圈的痛苦......

对于这个问题,您可以使用config/bootstrap.js文件。您可以使用createIndex函数(ensureIndex 是 createIndex 的别名)代替ensureIndex函数(已弃用)。可以在此处找到如何自动执行此操作的工作示例。

于 2019-02-27T16:02:42.277 回答
0

我正在使用迁移https://github.com/tj/node-migrate

用于生成索引

我的代码示例

于 2016-02-02T09:45:25.950 回答