sailsjs:自动创建复合唯一索引(mongodb)

问题描述 投票:4回答:4

我在我的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
        }
    }
   }
mongodb express sails.js waterline
4个回答
2
投票

Sails目前(截至v0.10)不支持多键索引,尽管它是on our radar。目前,您通过直接在Mongo控制台中指定索引的方式是正确的(也是唯一的)方式。


3
投票

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

支持所有mongo索引选项。

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


0
投票

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

用于生成索引

my code example


0
投票

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

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

考虑到这一点......

问题1 - 我做得对吗?

是的,你是...索引有点复杂,有时你需要在生产环境中更改它们,所以有时需要手工完成。

问题2 - 自动创建索引

是的......手工做的事情可以自动完成,这是一个痛苦的问题......

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

© www.soinside.com 2019 - 2024. All rights reserved.