gpt4 book ai didi

nestjs - 如何在不使用 queryBuilder 的情况下更新表上的多个字段?

转载 作者:行者123 更新时间:2023-12-03 08:18:48 25 4
gpt4 key购买 nike

我想更新“Returns”表的许多字段,此方法将接收一个整数数组,表示 Return 寄存器的 id 和更新此寄存器的值

Ej: ( [1,2,3,4], "新值")

通常我使用这种查询

await this.returnRepository.update(id, { shipment_id:'SomeValue' })

问题是,在这种特殊情况下,我需要更新许多 id,如果我使用该语法给出一个 Id 数组,则不起作用

为了解决此问题,我将 querybuilder 与此代码一起使用

await this.returnRepository.createQueryBuilder()
.update(ReturnEntity).set({ shipment_id: shipmentId })
.where("return_id IN(:...id)", { id: returnIds })
.execute()

问题:

1.- 我知道第二种形式的查询名称为 QUERY BUILDER,第一种形式的名称是什么?我尝试搜索“typeorm query”,但没有给我太多有关它的信息。

2.-是否可以将此查询生成器转换为第一个选项?会怎么样?

谢谢!

最佳答案

  1. 来自 Repository 的 TypeORM 文档:

Repository is just like EntityManager but its operations are limited to a concrete entity.

基本上,诸如 save()insert()update()delete() 之类的函数由存储库类提供,以便您轻松访问/更新实体。当您使用存储库时,功能仅限于存储库实体。

存储库与查询生成器:

简而言之,QueryBuilder API 为您提供了一系列强大的方法,可用于创建高级 SQL 查询,而 Repository > API 使您可以访问更易于使用的基本功能。

  • 是的,可以将 QueryBuilder 更新查询转换为存储库查询。
  • 为此,您可以使用 TypeORM 提供的 In 运算符。您可以这样做:

    import { In } from 'typeorm';

    await this.returnRepository.update(
    {id: In([1, 2, 3, 4])},
    {shipment_id:'SomeValue'}
    );

    这里,In 运算符已从 typeorm 导入并采用一个值数组。当你运行它时,它将生成一个像这样的 SQL 查询(部分):

    SET "shipment_id" = 'SomeValue' WHERE "id" IN (1,2,3,4)

    它位于高级选项下。您可以阅读有关 TypeORM advanced options here 的更多信息.

    我希望这能解答您的问题。

    外部链接:

    关于nestjs - 如何在不使用 queryBuilder 的情况下更新表上的多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68504113/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com