【问题标题】:Not able to update in Nestjs using typeorm无法使用 typeorm 在 Nestjs 中更新
【发布时间】:2021-11-06 03:16:50
【问题描述】:

我有一个我正在开发的应用程序,除了一个更新 IsTokenExpired 的端点外,所有其他事情都运行良好。这包含一个布尔值,它可以是真或假。我一直在尝试更新这个 isTokenExpired 一段时间,它似乎已经放弃了我。下面是代码列表:

密码重置.service.ts

...
async updateExpiryStatus(
    accessToken: string,
    isExpired: boolean
  ): Promise<any> {
    const expiryStatus = await this.passwordRepository.findOne({
      where: { accessToken },
    });
    const result = await this.passwordRepository
      .createQueryBuilder('password_entity')
      .update(PasswordEntity)
      .set({
        isExpired,
      })
      .where('accessToken = :accessToken', { accessToken })
      .execute();
    console.log('====================================');
    console.log({ expiryStatus, accessToken, isExpired });
    console.log('====================================');
    return result;
  }
...

密码重置.controller.ts

 @Put('updateToken/:accessToken')
  updateExpiryStatus(
    @Param('accessToken') accessToken: string,
    @Body() isExpired: boolean
  ): Promise<string> {
    return this.passwordService.updateExpiryStatus(accessToken, isExpired);
  }
}
...

密码重置.entity.ts

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity('password_reset')
export class PasswordEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  email: string;

  @Column({ unique: true })
  accessToken: string;

  @Column({ default: true })
  isExpired: boolean;
}

【问题讨论】:

  • isExpired 真的作为布尔值接收到控制器吗?你可以在那里添加控制台日志吗? @Put('updateToken/:accessToken') updateExpiryStatus( @Param('accessToken') accessToken: string, @Body() isExpired: boolean ): Promise&lt;string&gt; { console.log(isExpired); return this.passwordService.updateExpiryStatus(accessToken, isExpired); } }

标签: javascript typescript postgresql nestjs typeorm


【解决方案1】:

如果你已经用这个查询PasswordEntity

const expiryStatus = await this.passwordRepository.findOne({
      where: { accessToken },
    });

然后你可以这样做来更新isExpired

expiryStatus.isExpired = isExpired;
await this.passwordRepository.save(expiryStatus);

这将更新您使用accessToken 获取的行的状态。

this.passwordRepository.save(expiryStatus) 将返回新更新的行。

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 2022-01-02
    • 2022-01-11
    • 2019-08-13
    • 2019-11-13
    • 1970-01-01
    • 2021-04-28
    • 2021-12-03
    • 2021-04-23
    相关资源
    最近更新 更多