我试图使用Logger
nestjs 的内部(在https://docs.nestjs.com/techniques/logger - >上描述,但没有描述如何使用它)
但我有问题(试图注射LoggerService
等)
任何人都可以解释如何做到这一点?
TIA
import { ExtractJwt, Strategy } from 'passport-jwt';
import { AuthService } from './auth.service';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { JwtPayload } from './model/jwt-payload.model';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor(private readonly authService: AuthService) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: 'secretKey',
});
}
async validate(payload: JwtPayload) {
const user = await this.authService.validateUser(payload);
if (!user) {
throw new UnauthorizedException();
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
令牌是从请求中提取的PassportStrategy
。我不知道如何在令牌过期或无效时捕获错误。我的目的是如果因为令牌过期而出现错误,我需要刷新令牌。否则做别的事情。
我刚刚在一个简单的nest控制器上测试了性能,它在get请求(没有数据库)上返回文本.与快递相同的简单GET控制器(中间件).
我使用WRK工具来测试性能.
因此,plain express比nestjs快2倍.为什么nestjs会产生如此多的开销?
我有一个PlayersModule
和一个ItemsModule
.
我想用ItemsService
在PlayersService
.
当我通过注射添加它时:
import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType, Ref } from 'typegoose';
import { Player } from './player.model';
import { Item } from '../items/item.model';
import { ItemsService } from '../items/items.service';
@Injectable()
export class PlayersService {
constructor(
@InjectModel(Player) private readonly playerModel: ModelType<Player>,
private readonly itemsService: ItemsService){}
Run Code Online (Sandbox Code Playgroud)
我得到这个嵌套错误:
[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Nest无法解析PlayersService(+ ,?)的依赖关系.请确保索引[1]的参数在当前上下文中可用.
两个模块都导入了app.module.ts
.这两项服务都在他们的模块中单独工作.
我开发了简单的 nestjs 休息服务。现在我计划部署我的应用程序。请帮助我以高效的方式部署 nestjs 应用程序。
我在具有以下结构的文件夹中有邮件模块:
- Mail
- templates
- <Handlebars files>
- mail.module.ts
Run Code Online (Sandbox Code Playgroud)
当我构建(编译)TypeScript 项目时,我的template
文件夹不包含在build
文件夹中。dist
构建时如何将这些文件移入?
开发和生产构建有什么不同吗?
Nestjs 非常方便地提供了开箱即用的 DI 容器,但随着项目变得越来越复杂,很容易丢失所有依赖项及其顺序的全貌。
问题:有没有办法以可以放入树/图中的方式获取所有依赖项(模块、提供程序、控制器...)的列表?我确信 Nestjs 在内部跟踪这些信息,我想知道访问它的最佳方式是什么。
(我找到了[ nestjs-dependency-graph
],但它手动扫描模块以获取元数据,没有找到所有依赖项,并且往往会进入无限循环)
我正在尝试通过 Nest 测试一个课程。在这个类中(参见下图),对该类进行编码的人通过 typeorm 创建一个存储库。
当我尝试测试“createContact”函数时,出现以下错误:“Nest 无法解析 ContactService 的依赖项(?)。请确保索引 [0] 处的参数 ContactRepository 在 AuthModule 上下文中可用”。
这是我的测试课:
您知道如何使测试考虑到这一点,从而不再出现错误吗?
几周前,我在我的计算机上全局安装了 NestJS。现在我回到这个话题,开始学习。
所以我用命令创建了新项目:
nest new ./
Run Code Online (Sandbox Code Playgroud)
它生成了所有文件,但是当我尝试使用命令运行该应用程序时:
nest start
Run Code Online (Sandbox Code Playgroud)
我预计该模板项目会启动,但导入路径有错误?这是由于我安装的 Nest 版本还是其他原因造成的?
我的巢版本:
7.5.6
包.json:
"dependencies": {
"@nestjs/common": "^7.6.13",
"@nestjs/core": "^7.6.13",
"@nestjs/platform-express": "^7.6.13",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^6.6.6"
},
"devDependencies": {
"@nestjs/cli": "^7.5.6",
"@nestjs/schematics": "^7.2.7",
"@nestjs/testing": "^7.6.13",
"@types/express": "^4.17.11",
"@types/jest": "^26.0.20",
"@types/node": "^14.14.31",
"@types/supertest": "^2.0.10",
"@typescript-eslint/eslint-plugin": "^4.15.2",
"@typescript-eslint/parser": "^4.15.2",
"eslint": "^7.20.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-prettier": "^3.3.1",
"jest": "^26.6.3",
"prettier": "^2.2.1",
"supertest": "^6.1.3",
"ts-jest": "^26.5.2",
"ts-loader": "^8.0.17",
"ts-node": "^9.1.1",
"tsconfig-paths": "^3.9.0",
"typescript": "^4.1.5"
},
Run Code Online (Sandbox Code Playgroud) 哟,我有 Nestjs 的商店应用程序,我需要验证 mongo id,这是通过查询传递的,问题是我也传递和搜索查询。我编写了验证所有值的管道,并排除了此搜索查询
\n@Injectable()\nexport class ValidationObjectId implements PipeTransform {\n transform(value: UniqueId, metadata: ArgumentMetadata) {\n if (\n !Types.ObjectId.isValid(value) &&\n metadata.data !== "searchString"\n ) {\n throw new BadRequestException("\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd0\xb0");\n }\n\n return value;\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n但此代码不可重用于其他情况。我想要一些例子,我该怎么做
\nnestjs ×10
javascript ×5
node.js ×5
typescript ×5
build ×1
deployment ×1
jestjs ×1
logging ×1
passport.js ×1