问题描述
我试图定义一个基于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实例恰好在系统Z上。我创建了一个名为my_userid.MY_TABLE
的表,该表可以工作,但是对于我们尝试构建的解决方案,需要多个模式。
请注意,这似乎只是System Z上Db2的问题。我可以在Db2 LUW上更改架构。
解决方法
您使用的是哪种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"