标签: nestjs

对使用 NESTJS 启用 CORS 没有影响

我无法启用 CORS 来使用最新的 NestJS 8.0.6 和新的 http + ws 项目进行测试。也就是说,我想看到 Access-Control-Allow-Origin服务器响应(以便客户端接受它)。这是我的 main.ts,我尝试了 3 种方法:1)使用选项,2)使用方法,3)使用 app.use。它们都不起作用。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { microserviceConfig} from "./msKafkaConfig";

async function bootstrap() {
  const app = await NestFactory.create(AppModule, { cors: true}); // DOESN'T WORK
  app.enableCors(); // DOESN'T WORK

  app.connectMicroservice(microserviceConfig);
  await app.startAllMicroservices();

  
  // DOESN'T WORK
  app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS,UPGRADE,CONNECT,TRACE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Accept');
    next();
  });
  
  await app.listen(3000);



}
bootstrap();
Run Code Online (Sandbox Code Playgroud)

请不要给我上一课,告诉我如果我们接受所有域名,CORS (XSForgery) 会有多么危险。关于这一点有足够的材料。我很清楚这一点。这是关于 NestJS …

websocket node.js nestjs

3
推荐指数
1
解决办法
6629
查看次数

Nest 无法解析 JwtService 的依赖关系

我在这里创建了一些模块,但遇到了错误

认证模块

   import { Module } from "@nestjs/common";
import { AuthService } from "./auth.service";
import { LocalStrategy } from "./local.strategy";
import { JwtStrategy } from "./jwt.strategy";
import { UsersModule } from "../users/users.module";
import { PassportModule } from "@nestjs/passport";
import { JwtModule, JwtService } from "@nestjs/jwt";
import { jwtConstants } from "./constants";
import { ConfigModule, ConfigService } from "@nestjs/config";

@Module({
    imports: [
        UsersModule,
        PassportModule,
        JwtModule.register({
            secret: jwtConstants.secret,
            signOptions: { expiresIn: "1d" },
        }),
    ],
    providers: [AuthService, LocalStrategy, JwtStrategy],
    exports: [AuthService, LocalStrategy, …
Run Code Online (Sandbox Code Playgroud)

javascript jwt nestjs

3
推荐指数
1
解决办法
3973
查看次数

MongoDB 和类验证器唯一验证 - NESTJS

长话短说

我正在尝试在我的验证器中运行猫鼬查询


您好,我正在尝试制作一个自定义装饰器,如果该字段的值已存在,它会抛出错误。我正在尝试在验证路线的类中使用猫鼬模型。与解析器/控制器不同,它@InjectModel()在验证器类中不起作用。我的验证器是这样的

import { getModelToken, InjectModel } from "@nestjs/mongoose";
import {
  ValidationArguments,
  ValidatorConstraint,
  ValidatorConstraintInterface,
} from "class-validator";
import { Model } from "mongoose";
import { User } from "../schema/user.schema";

@ValidatorConstraint({ name: "IsUniqueUser", async: true })
export class UniqueValidator implements ValidatorConstraintInterface {
  constructor(
    @InjectModel(User.name)
    private readonly userModel: Model<User>,
  ) {}

  async validate(value: any, args: ValidationArguments) {
    const filter = {};

    console.log(this.userModel);
    console.log(getModelToken(User.name));
    filter[args.property] = value;
    const count = await this.userModel.count(filter);
    return !count;
  }

  defaultMessage(args: ValidationArguments) {
    return "$(value) …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose typescript class-validator nestjs

3
推荐指数
1
解决办法
5114
查看次数

在 PostgreSQL 的 TypeORM 中,findOne(id) 比 findOne({ id }) 更快吗?

我正在使用带有 TypeORM 和 PostgreSQL 的 NestJS 框架。假设我有一个简单的User实体,它只有两个属性:idname

@Entity()
class User {
  @PrimaryGeneratedColumn()
  id: string;

  @Column({
    type: 'varchar'
  })
  name: string;
Run Code Online (Sandbox Code Playgroud)

问题:

  1. usersRepository.findOne(id)快吗usersRepository.findOne({ id })

  2. 我认为这usersRepository.findOne(id)会比不在索引中更快usersRepository.findOne({ name })name不是吗?

postgresql repository-pattern typeorm nestjs

3
推荐指数
1
解决办法
9036
查看次数

Nest JS 中间件 .exclude 选项不会阻止排除路由的中间件

我试图排除中间件的一些路由。.exclude选项不起作用。相反,中间件也适用于排除的路由

这是中间件的代码 在此输入图像描述

这是用户模块的代码 在此输入图像描述

这是用户控制器的代码 在此输入图像描述

我想我的代码应该阻止“用户”GET 路由的中间件...但它允许被阻止的路由的中间件。

node.js express typescript nestjs

3
推荐指数
1
解决办法
5018
查看次数

类验证器:根据另一个属性的值在验证时删除一个属性

与 NestJS 一起使用class-validator,我的工作如下:

export class MatchDeclineReason {
  @IsString()
  @IsEnum(MatchDeclineReasonType)
  @ApiProperty()
  type: MatchDeclineReasonType;

  @ValidateIf(reason => reason.type === MatchDeclineReasonType.Other)
  @IsString()
  @ApiProperty()
  freeText: string;
}
Run Code Online (Sandbox Code Playgroud)

所以如果delinceReason.type === Other,我希望得到一个freeText字符串值。


但是,如果 与declineReason.type有任何不同Other,我希望该freeText财产被剥夺。

有没有什么方法可以在不编写 的情况下实现这种行为CustomValidator

我的ValidationPipe配置:

  app.useGlobalPipes(
    new ValidationPipe({
      disableErrorMessages: false,
      whitelist: true,
      transform: true,
    }),
  );
Run Code Online (Sandbox Code Playgroud)

validation typescript class-validator nestjs

3
推荐指数
1
解决办法
5616
查看次数

NestJS 上客户端断开连接时如何处理

我正在使用NestJS,我需要知道客户端何时强制断开连接取消连接。(要么是错误的,要么是因为他们想要)。

例如,在 Express 中,它很简单:

const express = require('express')
const app = express()
const port = 3000

app.get('/', (expressRequest, expressResponse) => {

    // Detecting close event
    expressRequest.on('close', function() {
        console.log('Client connection closed....!');
    });
    // Detecting end event
    expressRequest.on('end', function() {
        console.log('Client connection end....!');
    });

    expressResponse.send('Hello World!')
})

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})
Run Code Online (Sandbox Code Playgroud)

问题是:使用 NestJS,正确的方法是什么?

node.js express nestjs

3
推荐指数
1
解决办法
3010
查看次数

如何在NestJS中为swagger添加描述到@ApiTags?

我想添加 api 块的描述。

我努力了:

@ApiOperation({
  description: 'Operation description'
})
Run Code Online (Sandbox Code Playgroud)

这不起作用。

swagger nestjs

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

如何在Nest App中使用RabbitMQ和REST-API?

再会!

\n

我正在尝试实施2 microservices that communicate with each other through a message broker.But one of them should accept Http requests via REST-Api。不幸的是,我不明白如何让微服务同时监听消息队列和传入的 HTTP 请求。也许我不了解通过消息代理进行通信的范式中的某些内容,但是如何接收来自客户端的请求并将其转发到微服务架构呢?

\n

主.ts

\n
import { NestFactory } from \'@nestjs/core\';\nimport { AppModule } from \'./app.module\';\nimport {Transport, MicroserviceOptions} from \'@nestjs/microservices\'\n\nasync function bootstrap() {\n  const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {\n    transport: Transport.RMQ,\n    options: {\n      urls: [\'amqp://rabbitmq:5672\'],\n      queue: \'hello_world\',\n      queueOptions: {\n        durable: false\n      },\n    },\n  });\n  await app.listen();\n}\nbootstrap();\n
Run Code Online (Sandbox Code Playgroud)\n

正如您所看到的,现在应用程序没有像标准方法那样侦听端口 3000。应该做什么?

\n

javascript rabbitmq microservices nestjs

3
推荐指数
1
解决办法
3184
查看次数

找不到模块:错误:无法解析“类转换器/存储” - Angular Universal / NestJs

各位,我一直在尝试使用 Angular 与 Angular Universal 和 NestJs 来实现一个应用程序。我相信,不仅可以为 SSR 抢占 Nest 服务器,还可以提供 API 端点。

我已经使用https://github.com/nestjs/ng-universal进行了推荐的设置ng add @nestjs/ng-universal,相当标准。之后,我将代码添加到 Angular src 文件夹中并安装了所需的依赖项。

问题是,当我尝试将模块导入嵌套 app.module 时,出现以下错误: Error: Module not found: Error: Can't resolve 'class-transformer/storage'

我尝试过使用webpack,但是由于我对webpack的了解很少,所以结果一次次失败,正如预期的那样。

首先,是否可以抢占服务器来提供端点?其次,我应该如何解决这个模块?

请在下面找到用于重现问题的存储库:

https://github.com/vitordhers/universal-nest

提前致谢

server-side-rendering angular-universal angular nestjs

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