标签: nestjs

使用`class-validator`在TypeScript中确认密码

今天,我试图弄清楚如何在应用程序的后端 (NestJS) 中验证注册表单。我只是想知道是否存在一种验证passwordpasswordConfirm匹配的方法,使用class-validator包来构建自定义验证器或利用提供的验证器。我在考虑类验证器,而不是字段验证器。

// Maybe validator here
export class SignUpDto {
    @IsString()
    @MinLength(4)
    @MaxLength(20)
    username: string;

    @IsString()
    @MinLength(4)
    @MaxLength(20)
    @Matches(/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, {message: 'password too weak'})
    password: string;

    @IsString()
    @MinLength(4)
    @MaxLength(20)
    passwordConfirm: string;
}
Run Code Online (Sandbox Code Playgroud)

你有什么建议?

typescript class-validator nestjs

16
推荐指数
4
解决办法
1万
查看次数

如何将Nest.js微服务拆分为单独的项目?

假设我想创建一个简单的影院管理平台.它需要几个微服务:movies,cinemas,payments等.

你会如何在Nest.js中做到这一点?我不希望它们在同一个大文件夹中,因为感觉就像制作巨石.我希望它们与他们自己的git存储库分开使用Nest.js项目,这样我以后就可以用Kubernetes来协调它们了.

怎么样?如果它们是两个独立的项目并且只是共享,那么如何从服务连接cinemas到服务movies,比方说,Redis?

编辑:这不是一般的微服务问题.这是Nest.js具体的问题.我阅读了文档,我知道有@Client连接到传输层的装饰器.我只是想知道在哪里使用该装饰器,并且可能会看到一小段代码"有两个独立的Nest.js存储库如何将它们连接在一起以便它们可以相互通信".

我不关心传输层,我可以弄清楚自己.我只是需要一些关于框架本身的建议,因为我认为文档缺乏.

node.js typescript microservices nestjs

15
推荐指数
1
解决办法
6057
查看次数

如何使用 NestJS 重新抛出 HttpService 调用错误?

我正在使用 NestJS 基本上使用HttpService(一个可观察的包装 Axios 库)将请求代理到另一个 api 。例如:

return this.httpService.post(...)
  .pipe(
    map(response => response.data),
  );
Run Code Online (Sandbox Code Playgroud)

这在调用成功时正常工作;但是,如果出现错误 (4xx),我该如何正确返回状态和错误消息?

我已经想出了如何用承诺来做到这一点,但如果可能的话,我想留在一个可观察的范围内。

javascript observable typescript axios nestjs

15
推荐指数
1
解决办法
7041
查看次数

如何使用捆绑中的 node_modules 依赖项正确构建用于生产的 NestJS 应用程序?

Afternest buildnest build --webpackdist 文件夹不包含所有必需的模块,我Error: Cannot find module '@nestjs/core'在尝试运行node main.js.

我在https://docs.nestjs.com/上找不到任何关于如何正确构建生产应用程序的明确说明,所以也许我错过了什么?

javascript node.js typescript webpack nestjs

15
推荐指数
3
解决办法
8393
查看次数

运行 NestJS 应用程序时如何查看 console.log 输出?

我正在构建我的第一个 NestJS 应用程序,我在他们的文档中看到很多使用 console.log() 的示例,但是当我添加它时,终端中没有输出。我正在使用 vscode 的终端。

我还尝试使用内置 Logger 并使用 npm run start:debug 启动应用程序,但我也没有看到 Logger 的输出。我知道它已到达我的控制器,因为我收到了响应。有谁知道问题可能是什么?

visual-studio-code nestjs

15
推荐指数
2
解决办法
3万
查看次数

错误:绑定消息有 9914 个参数格式,但有 0 个参数

我正在使用 PostgresSQL,并且尝试删除列中的所有数据(我的实体由 和 组成idname,但是当我运行代码时,会出现一条错误消息。

这是代码(我使用 NestJs 和 TypeOrm):

    @Injectable()
export class ClearLinioBrands {
  constructor(
    @InjectRepository(LinioBrand)
    private linioBrandRepo: Repository<LinioBrand>,
  ) {}
  async execute(): Promise<void> {
    const existingBrands = await this.linioBrandRepo.find();
    await this.linioBrandRepo.remove(existingBrands);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我在控制台上收到以下错误:

    @Injectable()
export class ClearLinioBrands {
  constructor(
    @InjectRepository(LinioBrand)
    private linioBrandRepo: Repository<LinioBrand>,
  ) {}
  async execute(): Promise<void> {
    const existingBrands = await this.linioBrandRepo.find();
    await this.linioBrandRepo.remove(existingBrands);
  }
}
Run Code Online (Sandbox Code Playgroud)

该表中有 115900 行,这是此行为的原因吗?我应该怎么办?

postgresql typeorm nestjs

15
推荐指数
1
解决办法
1万
查看次数

如何使 typeorm、postgres 中的 3 列组合独一无二?

如何才能实现数据库中没有 2 条相同的记录且这 3 列的值组合相同?

  @Column()
  sector: string;

  @Column()
  row: string;

  @Column()
  number: string;
Run Code Online (Sandbox Code Playgroud)

postgresql typescript typeorm nestjs

15
推荐指数
1
解决办法
1万
查看次数

是否可以为 DTO 设置默认值?

当查询为空时,有没有办法使用默认值?

如果我有以下 DTO 查询:

export class MyQuery {
  readonly myQueryItem: string;
}
Run Code Online (Sandbox Code Playgroud)

我的请求不包含查询,那么myQuery.myQueryItem 将是未定义的。我如何使它具有默认值?

javascript node.js typescript nestjs

14
推荐指数
1
解决办法
1万
查看次数

我可以将实体字段名称映射到 typeorm 中的别名列名称吗?

我正在使用 TypeORM 从 Rails 迁移到 NestJs。由于历史原因,Rails 中的表名和列名都是蛇形的——我不想把这个麻烦复制到我们的 NestJs/React 端

我可以在 NestJS (typeorm) 中创建名为 firstName 的实体字段,但映射到我的数据库中名为 first_name 的列吗?

我的桌子

+-------------+--------------+----------------------------+
|                      system_users                       |
+-------------+--------------+----------------------------+
| id          | int(11)      | PRIMARY KEY AUTO_INCREMENT |
| first_name  | varchar(100) |                            |
| last_name   | varcahr(100) |                            |
+-------------+--------------+----------------------------+
Run Code Online (Sandbox Code Playgroud)

我的用户实体类

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

@Entity({ name: 'system_users' })
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 255 })
  first_name: string;  <-- I WANT THIS TO BE firstName (camelCased)

  @Column({ …
Run Code Online (Sandbox Code Playgroud)

typeorm nestjs

14
推荐指数
1
解决办法
9711
查看次数

端到端测试中的 NestJS 模拟 JWT 身份验证

我想在 NestJS e2e(集成)测试中模拟 JWT 身份验证。我在我的业务逻辑中使用注入的令牌数据,并且我不想在我的测试代码中插入凭据。

我按照Nest authentication docs实现了 JWT 身份验证。我使用@User与示例中的装饰器类似的装饰器,并在我的业务逻辑中使用有关用户对象的信息。

@Post()
async myPostEndpoint(@Body() body: PostBody, @User() user: MyUser){
    // do stuff using user properties
}
Run Code Online (Sandbox Code Playgroud)

当按照Nest 测试文档中的指示使用 supertest 测试我的应用程序时,我不想发出真正的身份验证请求,因为我需要在我的版本控制系统中保留凭据。

我希望能够覆盖提供者以返回测试用户。却想不通。

我尝试覆盖AuthService'svalidateClientlogin使用Nest 测试文档overrideProvider + useClass/useFactory/useValue中的指示返回默认用户。我还尝试覆盖and 中的方法,但请求仍然返回 401 - Unauthorized。JwtStrategyLocalStrategy

authentication unit-testing mocking typescript nestjs

14
推荐指数
2
解决办法
5321
查看次数