typescript 如何用Postgres将对象追加到数组中?

zynd9foi  于 2023-01-21  发布在  TypeScript
关注(0)|答案(1)|浏览(190)

我在Postgres上放置了数据库架构,json类型的列出现了如下问题:

@Column({
        type: 'jsonb',
        nullable: false,
        default: []
    })
    users: Array<User>

当我尝试将新元素压入这个数组时,如下所示:

await this.entityManager.getRepository(Project)
          .createQueryBuilder('project')
          .update()
          .set({
            users: () => `array_append('users', ${JSON.stringify({ name: user.firstname })}::jsonb)`
          }).execute();

编译器抛出这个错误:

QueryFailedError: syntax error at or near "{"

SQL查询:query:UPDATE "project" SET "users" = array_append('deployments', {"name":"Andrzej"}::jsonb) WHERE project.id = $3`
有人能告诉我如何在Postgres中正确地将新元素推到数组中吗?谢谢任何帮助!

67up9zun

67up9zun1#

根据错误:你需要单引号的json。

修复后,您的代码将如下所示

await this.entityManager.getRepository(Project)
      .createQueryBuilder('project')
      .update()
      .set({
        users: () => `array_append('users', '${JSON.stringify({ name: user.firstname })}'::jsonb)`
      }).execute();

您的SQL查询将如下所示:

UPDATE "project" SET "users" = array_append('deployments', '{"name":"Andrzej"}'::jsonb) WHERE project.id = 3

相关问题