Das OP fragte was force: false
tut, was ich auch wissen wollte, also hier ist der Rest.
Das wichtigste zum Mitnehmen, für mich war, dass die einzelnen Felder nicht synchronisiert sind (was ich gehofft hatte, aus der Waterline ORM). Das heißt, wenn Sie force: false
haben und die Tabelle existiert, werden die von Ihnen angelegten Feldzugänge/Änderungen/Löschungen nicht ausgeführt.
beforeSync
Haken laufen
- Tabelle gelöscht wird, wenn
force: true
- Tisch mit
if not exists
- Indizes erstellt werden, falls erforderlich
afterSync
Haken laufen
Hier ist die current code from the github repo als Referenz:
lib.model.js
Model.prototype.sync = function(options) {
options = options || {};
options.hooks = options.hooks === undefined ? true : !!options.hooks;
options = Utils._.extend({}, this.options, options);
var self = this
, attributes = this.tableAttributes;
return Promise.try(function() {
if (options.hooks) {
return self.runHooks('beforeSync', options);
}
}).then(function() {
if (options.force) {
return self.drop(options);
}
}).then(function() {
return self.QueryInterface.createTable(self.getTableName(options), attributes, options, self);
}).then(function() {
return self.QueryInterface.showIndex(self.getTableName(options), options);
}).then(function (indexes) {
// Assign an auto-generated name to indexes which are not named by the user
self.options.indexes = self.QueryInterface.nameIndexes(self.options.indexes, self.tableName);
indexes = _.filter(self.options.indexes, function (item1) {
return !_.some(indexes, function (item2) {
return item1.name === item2.name;
});
});
return Promise.map(indexes, function (index) {
return self.QueryInterface.addIndex(self.getTableName(options), _.assign({logging: options.logging, benchmark: options.benchmark}, index), self.tableName);
});
}).then(function() {
if (options.hooks) {
return self.runHooks('afterSync', options);
}
}).return(this);
};
Könnten Sie bitte die Links aktualisieren? – irobert91
@RobertIgnat aktualisiert –
Zusätzlich: Wenn Sie den Tabellennamen (der bereits existiert) einer Entität ändern, bleibt die Tabelle mit Daten und eine andere Tabelle mit dem neuen Namen wird erstellt. –