从控制器操作中为Sails模型设置元schemaName?

时间:2016-05-08 12:08:05

标签: postgresql sails.js waterline

我想通过控制器设置模型使用的模式。这样我就可以使用一个模型在一个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来设置它,但是这个元值不是那里的选项。

有谁知道我如何才能达到这个最终结果?

非常感谢任何回复,谢谢。

0 个答案:

没有答案