我已经搜索了很多关于Sails.js多租户功能的信息,并且我知道这样的特性还没有实现。我最初的想法是通过创建每个租户一个数据库来构建多租户应用程序。
因为我意识到我还不能在Sails.js中做这样的事情,所以我尝试了一个不同的方法,只创建一个数据库( POSTGRES ),但是有很多模式,每个模式都代表一个租户。我的问题是,我不能/我不知道(甚至不知道在Sails/Postgres适配器中这是否可行)如何动态(在运行时)根据日志记录的用户定义给定对象应该查询aganist的模式。
有人遇到过这样的问题吗?我该怎么做?
英语很抱歉,谢谢。
发布于 2018-06-01 12:38:21
根据我的经验,在模型中添加不起作用。唯一对我起作用的是使用元调用来指定模式。
await Users.create(newUser).meta({ schemaName: 'admin' });
有点麻烦,但还能用。
希望这能帮上忙。
发布于 2015-09-01 18:13:39
我认为这是一个基于在这个答案中的水管续集适配器的问题。
这样做的方法是在模型中添加属性。
meta: {
schemaName: 'schema'
},但是无法工作,您不能定义多个模式,只能将用户作为模式,如果属性模式在config/ takes s.js中设置为true,则每个表的架构定义都不能工作。
发布于 2019-10-03 16:01:25
线索是在船帆-postgresql适配器代码中--它的几个助手包括这个部分:
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中。
...
default: {
adapter: 'sails-postgresql',
url: 'postgresql://username:password@localhost:5432/your_database_name',
schemaName: 'your_schema_name_here'
}一旦设置好了,您就不必在任何查询中附加元({ schemaName:'blah'})。我为此挣扎了几天,终于以这种方式解决了它。
https://stackoverflow.com/questions/32194555
复制相似问题