Поскольку вам не разрешено запускать «migrate: alter» в рабочей среде (даже если вы попытаетесь), один из вариантов — создать этот индекс в файле начальной загрузки («config/bootstrap.js»).
Представьте, что у вас есть такая модель пользователя:
var User = {
attributes: {
email : { type: 'string', unique: true, required: true },
username : { type: 'string', unique: true, required: true },
pin: { type: 'string'}
}
};
module.exports = User;
Затем вы можете вручную создать отсутствующие индексы, подобные этому, в файле начальной загрузки:
module.exports.bootstrap = async function(done) {
console.log("Loading bootstrap...")
if (process.env.NODE_ENV === 'test') {
}
if (process.env.NODE_ENV === 'production') {
console.log("CREATING DATABASE INDEX BY HAND")
// USER MODEL
var db = User.getDatastore().manager;
await db.collection(User.tableName).createIndex( { email: 1 }, {unique: true} );
await db.collection(User.tableName).createIndex( { username: 1 }, {unique: true} );
// PANDA MODEL
// db = Panda.getDatastore().manager;
// await db.collection(Panda.tableName).createIndex( { name: 1 }, {unique: true} );
}
// await initializeDatabase() // custom DB initialization...
return done();
};
Индекс создается только один раз, последующие запуски не будут воссоздавать эти индексы. ensureIndex был псевдонимом для функции createIndex и имеет устарело.
Ссылки:
Справочник менеджера по водным линиям
Ссылка на создание индекса MongoDB
person
Dimas Crocco
schedule
25.02.2019