Loopback (DB2) — невозможно создать экземпляр PersistedModel, использующий схему, отличную от идентификатора пользователя.

Я пытаюсь определить модель, основанную на PersistedModel, для доступа к таблице в DB2, назовите ее MY_SCHEMA.MY_TABLE.

Я создал модель MY_TABLE на основе PersistedModel с источником данных (datasources.json), где определение включает атрибут "schema": "MY_SCHEMA". Источник данных также содержит идентификатор пользователя my_userid, используемый для соединения.

Текущее поведение

Когда я пытаюсь вызвать API для этой модели, он пытается получить доступ к таблице my_userid.MY_TABLE.

Ожидаемое поведение

Он должен получить доступ к MY_SCHEMA.MY_TABLE.

Экземпляр DB2 находится в System Z. Я создал таблицу с именем my_userid.MY_TABLE, и она будет работать, однако для решения, которое мы пытаемся создать, требуется несколько схем.

Обратите внимание, что это проблема только с Db2 в System Z. Я могу изменить схемы в Db2 LUW.


person Steven Ponessa    schedule 27.08.2020    source источник
comment
У вас есть необходимые разрешения?   -  person data_henrik    schedule 28.08.2020


Ответы (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"
person Miroslav Bajtoš    schedule 28.08.2020