通过Typeorm中的原始查询进行批量更新

时间:2018-12-15 09:04:12

标签: typeorm bulkupdate

如何通过typeorm中的原始查询进行批量更新?
例如,我们有具有属性 name
的模型 User 如何在一次交易中更改几个用户的名称?

typeorm版本: 0.2.7
数据库: postgress

4 个答案:

答案 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();