Я пытаюсь разделить подобъект в моем наборе записей при импорте данных со свойствами initCB столбца в ColumnSet.
Но когда я использую две разные функции инициализации для двух разных имен назначения, но для одного источника я получаю одинаковый результат.
const cs = new pgp.helpers.ColumnSet([
'id',
{ name: 'source_id', prop: 'source', init: function(obj) { return obj.value.id; } },
{ name: 'source_name', prop: 'source', init: function(obj) { return obj.value.name; } },
], { table: 'test_table' });
const data = [
{ id: 1, source: { id: 1, name: 'source1' } },
{ id: 2, source: { id: 1, name: 'source1' } },
{ id: 3, source: { id: 2, name: 'source2' } },
];
const insert = pgp.helpers.insert(data, cs);
Результат:
INSERT INTO "test_table"("id","source_id","source_name") VALUES
(1,'source1','source1'),
(2,'source1','source1'),
(3,'source2','source2')
вместо ожидаемого:
INSERT INTO "test_table"("id","source_id","source_name") VALUES
(1,1,'source1'),
(2,1,'source1'),
(3,2,'source2')
Похоже, что второй вызов функции обратного вызова для ТОГО ЖЕ исходного поля переопределяет результат предыдущего вызова ДРУГОЙ функции обратного вызова в ЭТОМ исходном поле.
Как я могу избежать этого?
Или есть другой способ разделения подобъекта при импорте?