带有sails.js 和sails-postgresql 的数据库模式

Posted

技术标签:

【中文标题】带有sails.js 和sails-postgresql 的数据库模式【英文标题】:Database schema with sails.js and sails-postgresql 【发布时间】:2014-08-14 09:03:28 【问题描述】:

有没有办法使用sails-postgresql 水线适配器设置数据库架构?

默认情况下,postgres 适配器总是在数据库中选择默认的公共架构,但我想将它连接到另一个架构。

例如,我有数据库开发,数据库开发中的模式测试和模式测试中的表用户。 现在我想从表用户中选择所有数据,用sql语法我可以简单地写:

SELECT * FROM test.users

如何让它在风帆中工作?

当我编写一个使用 postgres 适配器的模型时,方法 Users.find() 将在默认公共模式中查找表 users。我想将其更改为在不与我的 postgres 数据库交互的情况下查看模式测试。

有可能吗?

【问题讨论】:

【参考方案1】:

对此有支持,尽管它尚未记录在案。您可以使用meta.schemaName 属性为模型设置架构名称,例如:

module.exports = 

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

  attributes: 
     ...
  

;

更新

事实证明,这个功能在几个版本中基本上被破坏了,但它已经在 Sails-Postgresql v0.11.0 中进行了改进和发布。语法与上面相同。主要的警告是它适用于共享相同tableName 的多个 Waterline 模型。

【讨论】:

这对你有用吗?无论 schemaName 设置为模型,它仍会写入公共模式。我错过了什么吗? 检查我的答案 Diego【参考方案2】:

这似乎在最新的 1.0.3 版本上有点错误,但我找到了一种方法来完成它,通过这样做:

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

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

和平,出去!

【讨论】:

以上是关于带有sails.js 和sails-postgresql 的数据库模式的主要内容,如果未能解决你的问题,请参考以下文章

Bcrypt:带有 Docker 和 Sails.JS 的无效 ELF 标头

_id 找不到带有 Mongo 的 Sails.js

Sails.js 中的 JWT 和护照

带有 Node JS 和 Sails JS 的 Facebook Graph API

Sails.js 政策不适用于单个控制器

使用node.js套接字客户端向sails.js(0.11.x)发出事件[重复]