pg-обещание ColumnSet с вложенным объектом prop? - PullRequest
1 голос
/ 23 января 2020

Каков правильный синтаксис для дочернего объекта в качестве столбца prop?

const cs = new pgp.helpers.ColumnSet([
  {
    name: 'uid',
    prop: 'id'
  }, {
    name: 'created_at'
    prop: 'member.created_at // <-- error
  }
])

Не похоже, чтобы это сработало.

1 Ответ

1 голос
/ 23 января 2020

В то время как обычное pg-обещание форматирование запроса (с использованием Именованные параметры ) поддерживает вложенные свойства, в частности помощники нет, из-за сложности, связанной с определенными шаблонами .

Однако в этом нет необходимости, поскольку синтаксис ColumnSet для столбцов очень гибкий (см. Тип Column ) и поддерживает динамическое разрешение свойства c.

Просто обновите столбец, чтобы использовать init, чтобы получить значение динамически:

{
    name: 'created_at',
    init: c => c.source.member.created_at
}

Для поля мы go до объекта source, как в документацию и возьмите то, что нам нужно.

Альтернативный синтаксис:

{
    name: 'created_at',
    init(c) {
        // with this syntax, this = c.source

        return this.member.created_at;
    }
}
...