Я в замешательстве (снова).
При определении таблиц базы данных (MySQL), используя Sequelize, я хочу выполнить синхронизацию (принудительное выполнение: true) для удаления/создания таблиц. Все идет нормально.
Теперь я доволен своей user
таблицей и не хочу отбрасывать ее при каждом запуске, пока продолжаю определять другие таблицы.
Итак, я хотел бы установить флажок для user
параметров, sync: {forced: false}
module.exports = (sequelize, DataTypes) => {
let Schema = sequelize.define(
"user",
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
BlaBla:{}
},
{ // options
sync: {force: false},
freezeTableName: true,
timestamps: true
});
return Schema;
};
Это не работает. Таблица удаляется/создается при каждом запуске.
Переходим к определению таблицы моей company
.
module.exports = (sequelize, DataTypes) => {
let Schema = sequelize.define(
"company",
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
BlaBla:{}
},
{ // options
sync: {force: true},
freezeTableName: true,
timestamps: false
});
return Schema;
};
Вопрос
sequelize.define
параметров per sequelize.define
? Выборочная синхронизация в sequelize.define()
не поддерживается. См. Конфигурацию определения модели для деталей. В другом месте вашего проекта у вас должен быть вызов sequelize.sync({force: true})
который синхронизирует все модели. Вы должны исправить это в первую очередь, так как все ваши модели будут синхронизированы.
После исправления у вас есть несколько вариантов:
1: использовать миграции вперед. Каждое добавление или изменение в вашей схеме фиксируется в процессе миграции, поэтому вы можете развернуть каждое изменение без повторной синхронизации других. См. Http://docs.sequelizejs.com/manual/migrations.html.
2: Синхронизируйте каждую таблицу отдельно, как вы предлагаете. Вам нужно будет вызвать метод sync()
для каждой модели отдельно, например:
const company = require('./company');
const user = require('./user');
user.sync({force:true});
company.sync();
Это может быть полезно для ранней разработки, но по мере продвижения в проекте и начала выпуска, миграции должны стать вашим предпочтительным методом развертывания изменений схемы.
См. Http://docs.sequelizejs.com/manual/models-definition.html#database-synchronization.