问题描述
{
"name": "PlannerArchive","base": "PersistedModel","idInjection": true,"options": {
"validateUpsert": true,"strictObjectIDCoercion": true
},"properties": {
"planner": {
"type": "object","required": true
},"event": {
"type": "string","user": {
"type": "string","required": true
}
},"indexes": { <<<<<<<<<<<<<<<<<<<<<<<<
"event_idx": {
"keys": {
"event": 1
}
},"user_idx": {
"keys": {
"user": 1
}
}
}
}
我的期望是当服务器启动并创建集合时 - 索引也被创建。
实际情况是创建了集合,并创建了生成的“id”上的 PK 索引 - 但我的自定义索引都没有。
我可以在服务器启动时运行类似于 mongoDS.autoupdate()
的代码来创建它们,但我希望不需要这样做。
我对环回索引处理的理解是否有缺陷 - 或者我还能做些什么?
抱歉仍在运行 Loopback 3.x - 迁移正在进行中。
解决方法
添加索引时,您需要一个自动更新脚本。
将其添加到 /server/boot/autoupdate.js
中:
'use strict';
var Promise = require('bluebird');
module.exports = function (server) {
Promise.each(server.models(),function (model) {
if (model.dataSource) {
var autoupdate = Promise.promisify(model.dataSource.autoupdate);
if (autoupdate) {
return autoupdate.call(model.dataSource,model.modelName);
}
}
});
};