使用sails.js和sails-postgresql的数据库模式设计

6

有没有办法使用sails-postgresql waterline适配器设置数据库模式?

默认情况下,postgres适配器总是选择数据库中的默认public schema,但我想将其连接到另一个schema。

例如,我有一个名为dev的数据库,在数据库dev中有一个名为test的schema和一个名为users的表。现在我想从表users中选择所有数据,在SQL语法中,我可以简单地写:

SELECT * FROM test.users

如何在Sails中实现?

当我编写一个使用Postgres adapter的模型时,Users.find()方法将会查找默认 public schema 中的 users 表。我想将其更改为在 test 模式中查找,而不需要与我的 Postgres 数据库进行交互。

是否可能实现?

2个回答

4

虽然尚未记录,但是有支持此功能的方法。您可以使用meta.schemaName属性为模型设置架构名称,例如:

module.exports = {

  tableName: 'users',
  meta: {
     schemaName: 'test'
  },

  attributes: {
     ...
  }

};

更新

事实证明,这个功能在几个版本中基本上是无效的,但已经在Sails-Postgresql v0.11.0中进行了重新设计和发布。 语法与上面相同。 主要注意事项是它不能与共享相同tableName的多个Waterline模型一起使用。


这对你有用吗?它仍然写入公共模式,而不管模型设置的schemaName是什么。我有什么遗漏的吗? - Diego
请检查我的答案,Diego。 - netrevisanto

0

看起来在最新的1.0.3版本上有一些小问题,但我找到了一种方法来完成它,具体做法如下:

postgresql: {
    adapter: require('sails-postgresql'),
    url: 'postgresql://postgres:blablabla@localhost:5432/simplerp',
    schemaName: 'radius',
}

在你的 config/datastores.js 文件中。

平安,出去!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接