我在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
}
}
}
答案 0 :(得分:3)
我创建了一个sails钩子,为使用sails-mongo适配器的模型提供高级索引选项。
支持所有mongo索引选项。
答案 1 :(得分:2)
当前没有(从v0.10开始)Sails支持多键索引,尽管它是on our radar。目前,您通过直接在Mongo控制台中指定索引的方式是正确的(也是唯一的)方式。
答案 2 :(得分:0)
答案 3 :(得分:0)
船长的日志,日期为-303842.4081367327(2019年2月27日)。我们的目的地是Sails 1.0x框架。
即使Sails 1.0x / Waterline在模型中支持MongoDB复合索引声明(我不确定),在生产环境中部署应用程序时,也不会自动创建索引...但可悲:(< / p>
请记住这一点...
问题1 -我做对了吗?
是的...索引有些复杂,有时您需要在生产环境中进行更改,因此有时需要手动进行。
问题2 -自动创建索引
是的...可以手动完成的事情是甜甜圈 ...
的痛苦对于此问题,您可以使用 config / bootstrap.js 文件。可以使用 createIndex 函数(ensureIndex是createIndex的别名)来代替 ensureIndex 函数(已弃用)。 here中提供了一个有关如何自动执行此操作的有效示例。