Пропустить обновления столбцов, которые не были переданы в источнике - PullRequest
0 голосов
/ 11 октября 2019

Существует ли какой-либо синтаксис в строке имени столбца или в интерфейсе helpers.sets для пропуска столбцов для несуществующих свойств в источнике данных?

Теперь мне нужно создать ColumnConfig как new helpers.Column({ name, skip: c => !c.exists }) для каждого возможного столбца.

Было бы неплохо иметь что-то вроде:

pgp.helpers.sets(values, SomeRepository.cs.update, skipNonExisting);

или хотя бы:

pgp.helpers.ColumnSet(['column1*', 'column2*']);

где * (или любой другой удобный символ) указывает, что столбецнеобязателен в источнике, и он не выдает "Property 'name' doesn't exist."

Это необходимо для helpers.sets (не для update, поскольку у меня есть несколько нетривиальных обновлений SQL).

Как сказано в документации(http://vitaly -t.github.io / pg-обещание / helpers.html # .sets ), когда столбцы param в наборах не заданы, используются свойства объекта данных.

Это работает нормально, пока мне не нужно специальное форматирование для некоторого столбца, а затем устанавливает работу только для определенных столбцов в ColumnsSets, если указано.

1 Ответ

0 голосов
/ 11 октября 2019

В современном JavaScript вы можете легко сокращать вещи одной строкой ...

И так, чтобы превратить список имен столбцов в список необязательных столбцов:

const cndCols = arr => arr.map(name => ({name, skip: c => !c.exists}));

Объявление ColumnSet объект:

const cs = pgp.helpers.ColumnSet(cndCols(['column1', 'column2']));

Это не более сложно, чем решение, предложенное в вопросе.

Это нужно для helpers.sets (не дляобновление, поскольку у меня есть несколько нетривиальных обновлений SQL).

Для этого вы создаете и используете два отдельных объекта ColumnSet .

...