首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sails.js - Postgresql多模式

Sails.js - Postgresql多模式
EN

Stack Overflow用户
提问于 2015-08-25 02:19:40
回答 3查看 545关注 0票数 1

我已经搜索了很多关于Sails.js多租户功能的信息,并且我知道这样的特性还没有实现。我最初的想法是通过创建每个租户一个数据库来构建多租户应用程序。

因为我意识到我还不能在Sails.js中做这样的事情,所以我尝试了一个不同的方法,只创建一个数据库( POSTGRES ),但是有很多模式,每个模式都代表一个租户。我的问题是,我不能/我不知道(甚至不知道在Sails/Postgres适配器中这是否可行)如何动态(在运行时)根据日志记录的用户定义给定对象应该查询aganist的模式。

有人遇到过这样的问题吗?我该怎么做?

英语很抱歉,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-01 12:38:21

根据我的经验,在模型中添加不起作用。唯一对我起作用的是使用元调用来指定模式。

await Users.create(newUser).meta({ schemaName: 'admin' });

有点麻烦,但还能用。

希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2015-09-01 18:13:39

我认为这是一个基于在这个答案中的水管续集适配器的问题。

这样做的方法是在模型中添加属性。

代码语言:javascript
复制
  meta: {
    schemaName: 'schema'
  },

但是无法工作,您不能定义多个模式,只能将用户作为模式,如果属性模式在config/ takes s.js中设置为true,则每个表的架构定义都不能工作。

票数 0
EN

Stack Overflow用户

发布于 2019-10-03 16:01:25

线索是在船帆-postgresql适配器代码中--它的几个助手包括这个部分:

代码语言:javascript
复制
var schemaName = 'public';
    if (inputs.meta && inputs.meta.schemaName) {
      schemaName = inputs.meta.schemaName;
    } else if (inputs.datastore.config && inputs.datastore.config.schemaName) {
      schemaName = inputs.datastore.config.schemaName;
    }

因此,驱动程序实际上是在寻找默认情况下名为public的模式,除非如上所述通过调用meta()提供了不同的值,或者模式名称在应用程序范围内进行了配置。

要为所有模型配置架构名称,需要在postgresql数据存储的配置中包含一个schemaName属性,该配置发生在datastore.js中。

代码语言:javascript
复制
...
default: {
   adapter: 'sails-postgresql',
   url: 'postgresql://username:password@localhost:5432/your_database_name',
   schemaName: 'your_schema_name_here'
}

一旦设置好了,您就不必在任何查询中附加元({ schemaName:'blah'})。我为此挣扎了几天,终于以这种方式解决了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32194555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档