0

我在 postgres 中有一个表,其中有一个名为 user_ids 的列,其类型设置为 integer[]

但是,在为表格定义模型时,我似乎无法做到正确,当我尝试发布到表格时,它总是给我一个错误。我试过这个:

 @property({
    type: "object",
    itemType: "number",
    postgresql: {
      dataType: "integer ARRAY"
    },
    name: 'user_ids'
  })
  userIds?: number[];

当我将其作为调用正文发布时,postgres 抛出错误:“消息”:“位置 109 的 JSON 中的意外数字”:

"userIds": {
    1
  }

如果我试试这个:

 @property({
    type: "object",
    itemType: "number",
    postgresql: {
      dataType: "integer ARRAY"
    },
    name: 'user_ids'
  })
  userIds?: number[];

然后数据库抛出错误:格式错误的数组文字:“[1]”当我把它放在正文中时

"userIds": [
    1
  ]

有人可以告诉我如何正确定义模型。我知道 postgres 要求数组放在花括号中,但无论我尝试什么,loopback 或 postgres 都会引发错误

4

1 回答 1

0

对我来说@property({ type: 'array', itemType: 'number', postgresql: { dataType: 'integer ARRAY', }, })没有用(测试 14 和 9.6 postresql),但它适用于正确的迁移。

正如loopback-connector-postgresql的文档中所述,只有 String[] 支持的数组类型。在连接器的源代码(lib/postgresql.js)中有方法toColumnValue,并检查数组const isArrayDataType = prop.postgresql && prop.postgresql.dataType === 'varchar[]';

所以最简单的方法是分叉并像这样添加你的支票

const isArrayDataType = prop.postgresql && (prop.postgresql.dataType === 'varchar[]' || prop.postgresql.dataType.includes('ARRAY'));

于 2021-12-18T03:15:36.117 回答