- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想更新“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.-是否可以将此查询生成器转换为第一个选项?会怎么样?
谢谢!
最佳答案
Repository
is just likeEntityManager
but its operations are limited to a concrete entity.
基本上,诸如 save()
、insert()
、update()
、delete()
之类的函数由存储库类提供,以便您轻松访问/更新实体。当您使用存储库时,功能仅限于存储库实体。
存储库与查询生成器:
简而言之,QueryBuilder
API 为您提供了一系列强大的方法,可用于创建高级 SQL
查询,而 Repository
> API 使您可以访问更易于使用的基本功能。
为此,您可以使用 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/
我是一名优秀的程序员,十分优秀!