我有一个非常相似的表数据库。 table1
和table2
在我的API(nodejs 8)中具有相同的列并使用相同的逻辑。
我想在两个表中共享一个模式。根据请求的标头(我将声明一个全局变量),我要替换并使用一个或另一个表。
我的table1
模式:
const Sequelize = require('sequelize')
const Table1 = global.sequelize.define('table1', {
id: {
type: Sequelize.BIGINT(20)
},
name: {
type: Sequelize.STRING
},
username: {
type: Sequelize.STRING
}
})
module.exports = Table1
因此,当我在代码中查询时,我可以始终使用相同的架构-例如:Table.findAll({})
-,而不必使用ifs或三元数指定我想要的表
预先感谢
答案 0 :(得分:0)
前提是不寻常的。我不认为有一种动态更改表名的方法(可能应该不,因为模型应该是const)。您可以通过定义两个表来使其工作:
以下是模型/表格:
const Sequelize = require('sequelize')
const setOfColumns = {
id: {
type: Sequelize.BIGINT(20)
},
name: {
type: Sequelize.STRING
},
username: {
type: Sequelize.STRING
}
};
const Table1 = global.sequelize.define('table1', setOfColumns );
const Table2 = global.sequelize.define('table2', setOfColumns );
module.exports = {Table1, Table2}
您说:
取决于请求的标头(我将声明一个全局变量) 我要替换并使用一个或另一个表。
哪个IMHO与IF或三进制基本相同。控制器的外观如下:
const tables = require('../models/Table');
...
let TableModel = req.params.whichTable === '1' ? tables.Table1 : tables.Table2;
TableModel.findAll()..
HTH。