2015-02-10 12 views
6

Sto utilizzando le migrazioni per creare entità. Naturalmente, alcuni hanno delle relazioni tra loro. Fino ad ora, utilizzando sync(true), ho apprezzato il vantaggio di Sequelize implementando le relazioni per me a livello di database.Come creare associazioni in Sequelize migrations?

Come si esprimono nuove relazioni in una migrazione?

  1. Uno a molti: devo occuparmi delle colonne chiave esterna?
  2. Molti-a-molti: dovrei creare la tabella intermedia e impostare le chiavi esterne nella tabella di ogni entità?

Oppure: dovrei eseguire la migrazione e quindi sync(false)? E le relazioni che non sono più rilevanti?

risposta

3

Quando utilizzo le migrazioni, ho impostato sync: false.

E per impostare le associazioni, il mio modello finisce in questo modo:

user.js:

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
     "fname": { 
      "type": DataTypes.STRING, 
      "unique": false, 
      "allowNull": false 
     }, 
     "lname": { 
      "type": DataTypes.STRING, 
      "allowNull": false 
     } 
    }, { 
     "tableName": "Users", 
     "classMethods": { 
      "associate": function (models) { 
       Locale.hasMany(models.Permissions); 
      } 
     } 
    }); 

    return User; 
}; 

Questo sarà ancora creare la tabella se non esiste. Comunque raccomando che la creazione di una tabella faccia ancora parte di una migrazione. Si noti che nella migrazione per creare una tabella per includere le colonne id, updatedAt, createdAt e PermissionId (per l'esempio sopra)