今天,我试图弄清楚如何在应用程序的后端 (NestJS) 中验证注册表单。我只是想知道是否存在一种验证password
和passwordConfirm
匹配的方法,使用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)
你有什么建议?
假设我想创建一个简单的影院管理平台.它需要几个微服务:movies
,cinemas
,payments
等.
你会如何在Nest.js中做到这一点?我不希望它们在同一个大文件夹中,因为感觉就像制作巨石.我希望它们与他们自己的git存储库分开使用Nest.js项目,这样我以后就可以用Kubernetes来协调它们了.
怎么样?如果它们是两个独立的项目并且只是共享,那么如何从服务连接cinemas
到服务movies
,比方说,Redis?
编辑:这不是一般的微服务问题.这是Nest.js具体的问题.我阅读了文档,我知道有@Client
连接到传输层的装饰器.我只是想知道在哪里使用该装饰器,并且可能会看到一小段代码"有两个独立的Nest.js存储库如何将它们连接在一起以便它们可以相互通信".
我不关心传输层,我可以弄清楚自己.我只是需要一些关于框架本身的建议,因为我认为文档缺乏.
我正在使用 NestJS 基本上使用HttpService
(一个可观察的包装 Axios 库)将请求代理到另一个 api 。例如:
return this.httpService.post(...)
.pipe(
map(response => response.data),
);
Run Code Online (Sandbox Code Playgroud)
这在调用成功时正常工作;但是,如果出现错误 (4xx),我该如何正确返回状态和错误消息?
我已经想出了如何用承诺来做到这一点,但如果可能的话,我想留在一个可观察的范围内。
Afternest build
或nest build --webpack
dist 文件夹不包含所有必需的模块,我Error: Cannot find module '@nestjs/core'
在尝试运行node main.js
.
我在https://docs.nestjs.com/上找不到任何关于如何正确构建生产应用程序的明确说明,所以也许我错过了什么?
我正在构建我的第一个 NestJS 应用程序,我在他们的文档中看到很多使用 console.log() 的示例,但是当我添加它时,终端中没有输出。我正在使用 vscode 的终端。
我还尝试使用内置 Logger 并使用 npm run start:debug 启动应用程序,但我也没有看到 Logger 的输出。我知道它已到达我的控制器,因为我收到了响应。有谁知道问题可能是什么?
我正在使用 PostgresSQL,并且尝试删除列中的所有数据(我的实体由 和 组成id
)name
,但是当我运行代码时,会出现一条错误消息。
这是代码(我使用 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 行,这是此行为的原因吗?我应该怎么办?
如何才能实现数据库中没有 2 条相同的记录且这 3 列的值组合相同?
@Column()
sector: string;
@Column()
row: string;
@Column()
number: string;
Run Code Online (Sandbox Code Playgroud) 当查询为空时,有没有办法使用默认值?
如果我有以下 DTO 查询:
export class MyQuery {
readonly myQueryItem: string;
}
Run Code Online (Sandbox Code Playgroud)
我的请求不包含查询,那么myQuery.myQueryItem
将是未定义的。我如何使它具有默认值?
我正在使用 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) 我想在 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
'svalidateClient
并login
使用Nest 测试文档overrideProvider + useClass/useFactory/useValue
中的指示返回默认用户。我还尝试覆盖and 中的方法,但请求仍然返回 401 - Unauthorized。JwtStrategy
LocalStrategy
nestjs ×10
typescript ×7
javascript ×3
node.js ×3
typeorm ×3
postgresql ×2
axios ×1
mocking ×1
observable ×1
unit-testing ×1
webpack ×1