标签: nestjs

NestJS 的 i18n 意见

我目前正在开发一个使用 Angular/NestJS 的项目。我们已经使用 ngx-translate 在 Angular 中实现了 i18n,这很棒,我想知道在 NestJS 中实现 i18n 的最佳方法是什么。我发现了一个类似的问题,但这里唯一的答案是使用i18-node,然后围绕它实现自定义装饰器、包装器等,以将其与 Nest 一起使用。

我想知道在 NestJS 中是否有一些“固执己见”的方法来实现 i18?另外,如果“最佳”方法是使用 i18-node,我应该构建什么装饰器/包装器?

localization internationalization node.js nestjs

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

NestJS 阻止服务器在开发中重新加载

我有一条路线,在public目录中创建一个新文件夹,该文件夹是由app.useStaticAssets提供的静态内容。

问题是,即使我在tsconfig.build.jsontsconfig.json排除数组中添加了公共目录,当在公共目录中删除或创建新文件夹时,我的服务器仍然会在开发中重新加载。

我错过了什么?

更新: tsconfig.json

{
 "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "noImplicitAny": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true
  },
  "exclude": ["node_modules", "dist", "public"]
}
Run Code Online (Sandbox Code Playgroud)

我提到public文件夹位于src文件夹之外。他们处于同一水平。

node.js nestjs

2
推荐指数
1
解决办法
1723
查看次数

如何使用 Nestfastify 编写来自 NestJS 异常过滤器的响应

我在从 Nestjs 异常过滤器编写自定义 http 响应时遇到问题
我正在使用 Nest Fastify 过滤器(不是 Express)
我正在创建捕获 UserNotFoundException 的自定义异常过滤器,如下所示:

@Catch(UserNotFoundException)
export class UserNotFoundExceptionFilter implements ExceptionFilter {
  catch(exception: UserNotFoundException, host: ArgumentsHost) {
    const errorResponse = new ErrorResponse<string[]>();
    const response = host.switchToHttp().getResponse();
    errorResponse.message = 'unauthorized exception'
    errorResponse.errors = [
      'invalid username or pass'
    ];
    response.status(401).json(errorResponse)

  }
}
Run Code Online (Sandbox Code Playgroud)

我不断收到response.status(...).json() 不是函数。

[Nest] 5400   - 05/17/2020, 00:27:26   [ExceptionsHandler] response.status(...).json is not a function +82263ms
TypeError: response.status(...).json is not a function

Run Code Online (Sandbox Code Playgroud)

我知道我必须向某种类型的响应编写者指定该响应的类型(例如:来自快递的响应)。

我尝试从express导入该 Response对象,并将响应变量的类型更新为Response(express),如下所示:

import {Response} from 'express';
Run Code Online (Sandbox Code Playgroud)
 const …
Run Code Online (Sandbox Code Playgroud)

javascript typescript nestjs fastify nestjs-config

2
推荐指数
1
解决办法
6128
查看次数

部署后 NestJS swagger-ui-express 包丢失

我正在使用NestJS版本7.1.0serverless创建 api 文档使用nestjs swagger。在本地,它像冠军一样工作,但部署后出现错误。

swagger-ui-express package is missing
Run Code Online (Sandbox Code Playgroud)

我在这里看到一些问题,但仍然没有解决这个问题。 https://github.com/nestjs/swagger/issues/277

这是我的package.json

"dependencies": {
    "@nestjs/common": "^7.1.0",
    "@nestjs/core": "^7.1.0",
    "@nestjs/passport": "^7.0.0",
    "@nestjs/platform-express": "^7.0.7",
    "@nestjs/swagger": "^4.5.8",
    "aws-serverless-express-binary": "^1.0.1",
    "class-transformer": "^0.2.3",
    "class-validator": "^0.11.1",
    "dayjs": "^1.8.24",
    "dotenv": "^8.2.0",
    "dynamodb-data-types": "^3.0.1",
    "express": "^4.17.1",
    "faker": "^4.1.0",
    "jest": "^24.9.0",
    "jwks-rsa": "^1.6.0",
    "latinize": "^0.4.1",
    "lodash": "^4.17.15",
    "mime-types": "^2.1.26",
    "passport": "^0.4.1",
    "passport-jwt": "^4.0.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.0",
    "rxjs": "^6.5.3",
    "serverless-dynamodb-local": "^0.2.39",
    "swagger-ui-express": "^4.1.4",
    "tslint-loader": "^3.5.4",
    "uuid": "^3.3.3",
    "winston": "^3.2.1"
  },
Run Code Online (Sandbox Code Playgroud)

这是配置: …

swagger nestjs nestjs-swagger

2
推荐指数
1
解决办法
5755
查看次数

我可以使用 @nestjs/cofnig 从 appModule 中的数据库获取配置吗?

我想使用@nestjs 来管理配置文件。

现在我已经使用了以下方式来连接mysql和redis。

// app.module.ts
import { Module } from '@nestjs/common'
import { SequelizeModule } from '@nestjs/sequelize'
import { RedisModule } from 'nestjs-redis'
import { ConfigModule } from '@nestjs/config'
import { ExampleModule } from './example/example.module'
import { UserModule } from './user/user.module'
import config from './config' // I want to use @nestjs/config instead it

@Module({
  imports: [
    SequelizeModule.forRoot(config.DATABASE),
    RedisModule.register(config.REDIS),
    UserModule,
    ExampleModule,
    ConfigModule.forRoot()
  ],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

可以通过@nestjs/config获取appmodule中他们的配置信息吗

nestjs nestjs-config

2
推荐指数
1
解决办法
3676
查看次数

Nest.js GraphQL 字段解析器

我的问题更多的是如何实现这一点。我在文档中没有找到答案,所以问你);

例如:

  • 我有 2 个实体用户和博客;

  • 用户与博客是一对多关系;

  • 我对用户的查询如下所示:

query {
    me {
        firstName
        lastName
        blogs {
            title
            description
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Nest.js 代码中我有解析器:

query {
    me {
        firstName
        lastName
        blogs {
            title
            description
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果我们尝试将查询更改为:

query {
    me {
        firstName
        lastName
        blogs {
            title
            description
            user {
                id
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:我们可以将 ResolveField 委托给另一个解析器(例如 BlogResolver)吗?

graphql nestjs

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

找不到模块拦截器 NestJS

我按照NestJS 的文档设置拦截器,但我面临以下问题:

Error: Cannot find module 'src/middleware/request.interceptor'
     at Function.Module._resolveFilename (module.js:548:15)
     at Function.Module._load (module.js:475:25)
     at Module.require (module.js:597:17)
     at require (internal/module.js:11:18)
     at Object.<anonymous> (/mypath/dist/product/controller/product.controller.js:15:31)
     at Module._compile (module.js:653:30)
     at Object.Module._extensions..js (module.js:664:10)
     at Module.load (module.js:566:32)
     at tryModuleLoad (module.js:506:12)
     at Function.Module._load (module.js:498:3)
Run Code Online (Sandbox Code Playgroud)

src/middleware/request.interceptor.ts

Error: Cannot find module 'src/middleware/request.interceptor'
     at Function.Module._resolveFilename (module.js:548:15)
     at Function.Module._load (module.js:475:25)
     at Module.require (module.js:597:17)
     at require (internal/module.js:11:18)
     at Object.<anonymous> (/mypath/dist/product/controller/product.controller.js:15:31)
     at Module._compile (module.js:653:30)
     at Object.Module._extensions..js (module.js:664:10)
     at Module.load (module.js:566:32)
     at tryModuleLoad (module.js:506:12)
     at Function.Module._load (module.js:498:3)
Run Code Online (Sandbox Code Playgroud)

src/产品/控制器/product.controller.ts

@Injectable()
export class LoggingInterceptor …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript nestjs

2
推荐指数
1
解决办法
1559
查看次数

使用 mongoose 和 NestJS 自动增量字段

有人可以指导我如何在将 mongoose 与 NestJS 框架一起使用时自动递增集合内的任何字段。

例如:假设我有这个用户模式

@Schema()
export class User extends Document {
    @Prop()
    userId: number;  // I want to increment this field on each new user
    
    @Prop()
    name: string;

    @Prop({
        type: String,
        required: true,
        unique: true,
    })
    email: string;

    @Prop()
    isEmailVerified: boolean;

    @Prop({
        type: String,
        required: true,
        unique: true,
    })
    mobile: string;

    @Prop()
    isMobileVerified: boolean;

    @Prop({
        type: String,
        required: true,
    })
    password: string;

}

export const UserSchema = SchemaFactory.createForClass(User);
Run Code Online (Sandbox Code Playgroud)

我想增加每个新用户的 userId 。谢谢

mongoose typescript nestjs

2
推荐指数
1
解决办法
3655
查看次数

NestJS 中的日期处理

我的 NestJS API 返回格式为“YYYY-mm-dd”的字符串,我希望它的格式类似于“dd-mm-YYYY”,或者如果可能的话返回日期对象。

NestJS 也无法识别 Angular 何时发送日期。我是否需要以特定方式将其作为字符串发送,或者 Nest 可以转换它?

我正在寻找答案和文档一段时间,但没有找到任何

我的实体是这样的:

export class Example {
  @PrimaryGeneratedColumn()
  id: number;

  @Column('date', { nullable: true })
  date: Date;
}
Run Code Online (Sandbox Code Playgroud)

API返回的结果是这样的:

[
  {
    'id': '1',
    'date': '2020-06-25'
  }
]
Run Code Online (Sandbox Code Playgroud)

typeorm angular nestjs

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

当我将另一个服务注入nestjs中的用户服务时,如何修复未知的身份验证策略“jwt”

我有一个处理注册、登录和其他一些功能的用户服务。我已经在该应用程序上工作了一段时间,有超过 10 个模块。但我注意到每次我注入另一个服务并尝试使用任何端点时我都会收到此错误错误"Unknown authentication strategy "jwt".错误是:-

Internal Server Error
Response body

{
  "statusCode": 500,
  "message": "Internal server error"
}
Run Code Online (Sandbox Code Playgroud)

一旦我从用户模块中删除注入的服务,一切都会恢复正常。我一直在尝试解决这个问题,因为我需要在用户模块内使用此服务。

这是 jwt.Strategy.ts

import { Injectable, HttpException, HttpStatus } from "@nestjs/common";
import { PassportStrategy } from '@nestjs/passport';
import { Strategy, ExtractJwt, VerifiedCallback } from "passport-jwt";
import { AuthService } from './auth.service';

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
    constructor(private authService: AuthService) {
        super({
            jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
            ignoreExpiration: false,
            secretOrKey: process.env.SECRETKEY
        });
    }

    async validate(payload: any, done: VerifiedCallback) {
        const user …
Run Code Online (Sandbox Code Playgroud)

authentication module node.js passport.js nestjs

2
推荐指数
1
解决办法
5643
查看次数