带有嵌套对象道具的 pg-promise ColumnSet?

pg-promise ColumnSet with nested object prop?

对象子项作为列道具的正确语法是什么?

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

似乎无法正常工作。

虽然常规 pg-promise query formatting (using Named Parameters) supports nested properties, specifically helpers 没有,但由于某些与模板相关的复杂性。

不过没必要,因为ColumnSet syntax for columns is very flexible (see type Column),支持动态属性分辨率

只需更新列以使用 init,动态获取值:

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

对于字段,我们转到source对象,如per documentation,取我们需要的。

替代语法:

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

        return this.member.created_at;
    }
}