2016-04-05 3 views
1

Ich finde heraus, gibt es zwei Möglichkeiten, wie wir Knex Migration in der Migrationsdatei schreiben können.Erstellen knex Migration

exports.up = function (knex) { 
    return knex.schema 
     .createTableIfNotExists('foo', function (table) { 
     table.increments('id').unique(); 
     table.string('foo1'); 
     table.string('foo2'); 
     }) 
    .createTableIfNotExists('bar', function (table) { 
     table.increments('bar1'); 
     table.string('bar2').index(); 
     }); 

Oder

exports.up = function (knex) { 
    return Promise.all([ 
     knex.schema.createTableIfNotExists('foo', function (table) { 
     table.increments('id').unique(); 
     table.string('foo1'); 
     table.string('foo2'); 
     }), 
     knex.schema.createTableIfNotExists('bar', function (table) { 
     table.increments('bar1'); 
     table.string('bar2').index(); 
     }) 
    ]); 
} 

Welches ist der richtige Weg, es zu tun?

Antwort

1

von Ricardo Graca Beantwortet bei Knex's github issue page

In diesem Fall ist es nicht einen Unterschied macht.

würden Sie nur verwenden, das Versprechen einer Basis, wenn Sie einige Änderungen erfordern in eine Tabelle, bevor eine weitere Änderung in einer anderen Tabelle zu tun. Zum Beispiel, wenn Sie benötigten eine bestimmte Tabelle aus einer anderen Tabelle und keinen von diese Tabellen existieren noch verweisen, würden erstellen Sie die erste Tabelle (die, die nicht auf irgendetwas hängen) in einem Versprechen und dann, wenn das Versprechen gelöst, würden Sie die zweite Tabelle erstellen. Auf diese Weise stellen Sie sicher, dass Abhängigkeiten erfüllt sind.

1

Dies ist der richtige Weg Knex Skript zu schreiben, Promises die bevorzugte Art und Weise des Umgangs mit Abfragen in Knex sind, da sie ermöglicht es Ihnen, Werte von einer Erfüllung Handler zurückzukehren.

exports.up = function (knex) { 
return Promise.all([ 
    knex.schema.createTableIfNotExists('foo', function (table) { 
    table.increments('id').unique(); 
    table.string('foo1'); 
    table.string('foo2'); 
    }), 
    knex.schema.createTableIfNotExists('bar', function (table) { 
    table.increments('bar1'); 
    table.string('bar2').index(); 
    }) 
]); 
} 
Verwandte Themen