如何通过typeorm中的原始查询进行批量更新?
例如,我们有具有属性 name
的模型 User
如何在一次交易中更改几个用户的名称?
typeorm版本: 0.2.7
数据库: postgress
答案 0 :(得分:4)
要进行批量更新,可以使用set方法进行更新,在使用orm函数时,始终建议不要使用原始查询。
import {getConnection, In} from "typeorm";
const userIds = [1,2,3];
await getConnection()
.createQueryBuilder()
.update(User)
.set({ isaSeniorCitizen: true })
.where({ id: In(userIds) })
.execute();
答案 1 :(得分:1)
您可以使用QueryBuilder:
import {getConnection} from "typeorm";
await getConnection()
.createQueryBuilder()
.update(User)
.set({ firstName: "Timber", lastName: "Saw" })
.where("id = :id", { id: 1 })
.execute();
或query()
方法:
getRepository(User).query('UPDATE `users` SET firstName = 'Timber', lastName = 'Saw' WHERE id = 1')
答案 2 :(得分:1)
您也可以通过这种方式使用存储库 api 更新多行:
await repository.update(
{
id: In([1,2,3,4,5]),
},
{ selected: true },
);
答案 3 :(得分:0)
你可以这样做
import {getConnection } from "typeorm";
const userIds = [1,2,3];
await getConnection()
.createQueryBuilder()
.update(User)
.set({ isaSeniorCitizen: true })
.whereInIds(userIds)
.execute();