sql >> Database >  >> NoSQL >> MongoDB

Sailsjs. Beste manier om indexen op Sails-mongo (mongodb) te maken (en te beheren)

Aangezien het je niet is toegestaan ​​om 'migrate:alter' in productie uit te voeren (zelfs als je het probeert), is een optie om die index te maken in het bootstrap-bestand ('config/bootstrap.js').

Stel je voor dat je een gebruikersmodel als dit hebt:

var User = {
  attributes: {
    email     : { type: 'string', unique: true, required: true },
    username  : { type: 'string', unique: true, required: true },
    pin: { type: 'string'}
  }
};

module.exports = User;

Vervolgens kunt u handmatig de ontbrekende indexen als volgt maken in het bootstrap-bestand:

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();
};

De index wordt slechts één keer gemaakt, volgende runs zullen die indexen niet opnieuw maken. De ensureIndex was een alias om de functie CreateIndex te maken en deze is verouderd.

Referenties:

Referentie voor waterlijnmanager

MongoDB maakt indexreferentie



  1. Indexen toevoegen aan het mongoDB-project met het Morphia-framework

  2. Mongo URI met zelfondertekend certificaat

  3. Voorkom dat er null-velden in resultaat zijn wanneer $dateFromString op een veld wordt gebruikt

  4. limieten van het aantal collecties in databases