我想通过控制器设置模型使用的模式。这样我就可以使用一个模型在一个PostgreSQL数据库中填充两个不同的模式。
我以为我可以使用:sails.models.test.meta.schemaName = 'test2';
在控制器中访问此值,但似乎情况并非如此,或者我只是以错误的方式进行操作。
在Sails中,我有两条路线:
'get /test1': 'TestController.test1',
'get /test2': 'TestController.test2'
和一个相对的控制者:
module.exports = {
data: {
val1: 'Value 1',
val2: 'Value 2'
},
test1: function (req, res) {
Test.create( sails.controllers.test.data ).exec(function (err, result){
res.json(result);
});
},
test2: function (req, res) {
// Show the current schemaName
console.log(sails.models.test.meta.schemaName); // outputs: test1
// Trying to set the schema name
sails.models.test.meta.schemaName = 'test2';
// Trying to add a record using a different schema name
Test.create( sails.controllers.test.data ).exec(function (err, result){
res.json(result);
});
}
};
相关模型:
module.exports = {
connection: 'postgres',
migrate: 'alter',
meta: {
schemaName: 'test1'
},
attributes: {
val1: {type: 'string'},
val2: {type: 'string'}
}
};
因此,在模型中,默认架构为test1
。如果我在浏览器中访问路由/test1
,那么它会将数据插入模式test1
中的数据库,非常棒。
现在,如果我访问路由/test2
,我希望将模型元schemaName设置为test2
,以便在插入记录时将其插入到模式test2
中数据库。这不会发生,它只是将值插入模式test1
,就像上一次测试一样。
那么我想也许我可以通过sails.config.models来设置它,但是这个元值不是那里的选项。
有谁知道我如何才能达到这个最终结果?
非常感谢任何回复,谢谢。