Sailsjs.Лучший способ создания (и управления) индексов на sails-mongo (mongodb) - PullRequest
0 голосов
/ 16 мая 2018

Я использовал sailsjs 0.12.Он поддерживал атрибуты index на models, также я использовал пакет npm Sails-hooks-mongoat для создания обратных индексов и т. Д.

Это не было идеальным, но это работало.Прямо сейчас они удалили атрибут index, и в настоящее время mongoat небезопасен и ожидает обновления для работы с Sails.js 1.0.

Я хотел бы знать лучший подход к:

  • Создание индексов в новых развертываниях.
  • Миграция (убедиться?) Индексов в обновлениях развертывания.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Поскольку вы не можете запускать '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();
};

Индекс создается только один раз, последующие запускине будет воссоздавать эти индексы. sureIndex был псевдонимом функции createIndex, и он устарел.

Ссылки:

Справочник менеджера по водным линиям

MongoDB создать ссылку на индекс

0 голосов
/ 28 июня 2018

В режиме разработки вы можете указать пользовательские индексы в модели в Sails, или они будут удалены при поднятии сервера и выполнении миграции.

Мой (предпочтительный) альтернативный подход заключается в самостоятельном управлении всеми индексами в БД. Для этого необходимо изменить атрибут «migrate» с «alter» на «safe» в конфигурационном файле models.js.

Обратите внимание, что в производственном режиме атрибут "migrate" всегда имеет значение "safe".

...