Sequelize中没有用于管理视图的内置方法,但是您可以使用简单的SQL查询创建它们,并使用常规的Sequelize模型对其进行管理。
如果您按照Sequelize文档的建议使用Umzug进行迁移,则可以使用类似于以下内容的迁移来创建视图:
const view_name = 'my_view';
const query = '';
module.exports = {
up: function (database, Sequelize) {
return database.query(`CREATE VIEW ${view_name} AS ${query}`);
},
down: function (database, Sequelize) {
return database.query(`DROP VIEW ${view_name}`);
}
}
对于视图更改或更新,应使用CREATE或REPLACE VIEW语法来确保可以回滚架构更改-避免尝试丢弃旧视图并创建新视图!
const view_name = 'my_view';
const original_query = '';
const new_query = '';
module.exports = {
up: function (database, Sequelize) {
return database.query(`CREATE OR REPLACE VIEW ${view_name} AS ${new_query}`);
},
down: function (database, Sequelize) {
return database.query(`CREATE OR REPLACE VIEW ${view_name} AS ${original_query}`);
}
}
当然,确切的代码段会根据您到目前为止设置迁移的方式而有所不同。
迁移完成后,使用视图名称作为表名称,照常创建一个表示视图架构的Sequelize模型。 所有的find系列功能都应按预期工作,而update , delete和create则应失败。
您可以参考Sequelize文档中的原始查询 ,以及此示例存储库,以将Umzug与Sequelize一起使用。 我可以找到有关Umzug本身的唯一正式文档,位于NPM页面上 。