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