gpt4 book ai didi

express - NestJS - 如何使用 TypeOrm 正确更新

转载 作者:行者123 更新时间:2023-12-04 01:14:45 27 4
gpt4 key购买 nike

我有这个 Controller :

async reinstate(@Param() getSubscriptionDto: GetSubscriptionDto) {
const reinstatedSubscription = await this.subscriptionsService.reinstateById(
getSubscriptionDto.id
)
if (reinstatedSubscription.affected === 0) {
throw new NotFoundException('Subscription not found')
}

return 204
}
和服务:
const subscription = {
id: subscriptionId,
status: 'pass',
cancelledAt: null,
}

return await this.subscriptionRepository.update(
subscriptionId,
subscription
)
更新总是返回具有“受影响”属性的对象。正如我所见,如果它使受影响的更新值为 1,并且如果我发送不存在的订阅,则受影响的值为 0。
因此,在我的 Controller 中,我有这个:
 if (reinstatedSubscription.affected === 0) {
throw new NotFoundException('Subscription not found')
}
它确实有效,但这是唯一的方法吗?
另外,如何不返回内容响应?

最佳答案

有多种方法可以在 typeorm 中更新记录:

  • 使用 Query Builder

  • import {getConnection} from "typeorm";

    await getConnection()
    .createQueryBuilder()
    .update(User)
    .set({ firstName: "Timber", lastName: "Saw" })
    .where("id = :id", { id: 1 })
    .execute();

  • 使用 save

  • Saves a given entity or array of entities. If the entity already exist in the database, it is updated. If the entity does not exist in the database, it is inserted. It saves all given entities in a single transaction (in the case of entity, manager is not transactional). Also supports partial updating since all undefined properties are skipped. Returns the saved entity/entities.


    import { getMongoRepository } from 'typeorm';

    repo = getMongoRepository(User);
    await repository.save(user);
  • 使用 update正如你提到的

  • 特别是,有 updateOnefindOneAndUpdate , updateMany MongoRepository API 中的 api。更多细节可以引用 here

    关于express - NestJS - 如何使用 TypeOrm 正确更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63719056/

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