SailsJS:自动创建复合唯一索引(MongoDB)

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

3

截至v0.10目前,Sails尚不支持多键索引,但它已经在我们的关注列表中。 目前,您可以通过在Mongo控制台中直接指定索引的方式来实现,这是正确(也是唯一)的方法。


v0.10 的发布日期有任何预估吗?我已经阅读了参考资料,迫不及待想要尝试。是否可以下载测试版?这是个好主意吗?谢谢。 - user2867106
您可以通过 npm install sails@beta 安装 Sails beta 版本。我们正在整理文档,希望尽快发布。 - sgress454

1
船长日志,星际日期-303842.4081367327(2019年2月27日)。我们的目的地是框架Sails 1.0x。
即使Sails 1.0x / Waterline在模型中支持MongoDB复合索引声明(我不确定),但在生产中部署应用程序时,索引不会自动创建...很遗憾 :(
考虑到这一点...
问题1 - 我做得对吗?
是的,你做得对...索引有点复杂,有时需要在生产环境中更改它们,因此有时手动完成是必要的。
问题2 - 自动创建索引
啊...手动完成可以通过自动化完成,这真是太痛苦了...
针对此问题,您可以使用config/bootstrap.js文件。不再使用ensureIndex函数(已弃用),而是使用createIndex函数(ensureIndex是createIndex的别名)。如何自动执行的工作示例可以在这里找到。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接