Loopback (DB2) - 无法创建使用 userid 以外的架构的 PersistedModel 实例

问题描述 投票:0回答:2

我正在尝试定义一个基于 PersistedModel 的模型来访问 DB2 中的表,称之为

MY_SCHEMA.MY_TABLE

我基于 PersistedModel 创建了模型

MY_TABLE
,并带有数据源 (
datasources.json
),其中定义包含属性
"schema": "MY_SCHEMA"
。 数据源还包含用于连接的用户 ID
my_userid

当前行为

当我尝试调用此模型的 API 时,它会尝试访问表

my_userid.MY_TABLE

预期行为

它应该访问

MY_SCHEMA.MY_TABLE

DB2 实例恰好位于 System Z 上。我创建了一个名为

my_userid.MY_TABLE
的表,这将起作用,但是对于我们尝试构建的解决方案,需要多个模式。

请注意,这似乎只是 System Z 上的 Db2 的问题。我可以更改 Db2 LUW 上的架构。

db2 loopbackjs loopback
2个回答
1
投票

您使用什么 LoopBack 连接器?什么版本?您还可以检查您的

loopback-ibmdb
文件夹中安装了哪个版本的
node_modules
吗?

AFAICT,LoopBack 的 DB2 相关连接器支持

schema
字段,请参阅 https://github.com/strongloop/loopback-ibmdb/blob/master/lib/ibmdb.js#L96-L100

self.schema = this.username;
if (settings.schema) {
  self.schema = settings.schema.toUpperCase();
}

self.connStr += ';CurrentSchema=' + self.schema;

您是否考虑过使用

DSN
而不是像
hostname
username
这样的单独字段来配置数据库连接?

在您的数据源配置 JSON 中:

"dsn": "DATABASE={dbname};HOSTNAME={hostname};UID={username};PWD={password};CurrentSchema=MY_SCHEMA"

0
投票

我也遇到了类似的问题,并且在这个问题上困扰了近3天。 我最初使用的是不同的 dsn,其中我针对

schema
引用了架构名称,但我按照 Miroslav 的建议更改了它,并且它起作用了。

我以前的dsn:

"dsn": "DATABASE={dbname};HOSTNAME={hostname};UID={username};PWD={password};Schema=MY_SCHEMA"

正确的 dsn 格式:

"dsn": "DATABASE={dbname};HOSTNAME={hostname};UID={username};PWD={password};CurrentSchema=MY_SCHEMA"

© www.soinside.com 2019 - 2024. All rights reserved.