Как я могу удалить все таблицы с Sequelize.js использует postgresql?
Я:
if (process.NODE_ENV === 'test') {
foreignKeyChecks = 0;
forceSync = true;
} else {
foreignKeyChecks = 1;
forceSync = false;
}
global.db.sequelize.query("SET FOREIGN_KEY_CHECKS = " + foreignKeyChecks).then(function() {
return global.db.sequelize.sync({
force: forceSync
});
}).then(function() {
return global.db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
}).then(function() {
var server;
console.log('Initialzed database on:');
console.log(config.db);
return server = app.listen(port, function() {
return console.log("Server listening at http://" + (server.address().address) + ":" + (server.address().port));
});
})["catch"](function(err) {
return console.log('err', err);
});
module.exports = app;
а я: SequelizeDatabaseError: unrecognized configuration parameter "foreign_key_checks"
Я предполагаю, что у меня не может быть этого ключевого слова в postgres? Но есть ли эквивалентный способ удалить все таблицы и воссоздать?
3 ответов
Я ничего не знаю об этой библиотеке JavaScript, но Postgres предоставляет одну команду, чтобы удалить все, что принадлежит пользователю:
drop owned by <our_user_name cascade
Это будет работать, только если все принадлежит тому же пользователю, и у этого пользователя нет некоторых таблиц (или представлений, последовательностей, ...), что вы делаете не хочу бросить.
подробнее в руководстве:
http://www.postgresql.org/docs/current/static/sql-drop-owned.html
это обновленный ответ, ориентированный на гуглеров, которые оказались здесь, как и я.
Sequelize предлагает функцию падения:
drop(options) => promise
удалите все таблицы, определенные через этот экземпляр sequelize. Это делается путем вызова модели.бросьте на каждой модели. Sequelize docs
пример
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var someModel = sequelize.define('somemodel', {
name: DataTypes.STRING
});
sequelize
.sync() // create the database table for our model(s)
.then(function(){
// do some work
})
.then(function(){
return sequelize.drop() // drop all tables in the db
});