Nestjs 如何使HTTP请求对象对winston logger可见?

我正在构建一个基于日志的应用程序并使用它进行日志记录 我想用每个日志消息记录传入的请求头。为此,我需要从nestjs中提取HTTP上下文并将其传递给nest winston 我也找不到该怎么做。如果这在nest winston中不可行,我不介意直接使用winston。据我所知,nest winston模块不可行,因为其记录器不可行。您需要创建自己的服务,并将服务作为请求范围。然后可以使用@InjectREQUEST将请求添加到要创建的winston服务的每个实例中 话虽如此,请求作用域类也有一些

Nestjs 如何使动态模块成为全局模块?

在我的应用程序中,我希望在整个项目中使用服务类的单个实例。服务类将由动态模块初始化 事情的细节 我有一个名为LoggerModule的模块,它有一个静态函数寄存器。我们使用此方法在应用程序模块中进行初始化,例如:LoggerModule.register(选项)。在register方法中,我们将返回一个动态模块,该模块将此选项设置为自定义提供程序。 例如: 这里我们有一个LoggerService,它注入了CONFIG_选项,因此我们可以使用服务类获取选项。现在,我希望能够通过将服务注入到我的类

Nestjs 配置到子模块的传播

我正在寻找一种方法: 将动态模块的配置传播到子模块中 更改根据配置导入动态模块的 假设我们有一个动态模块a,可以选择使用动态子模块A1和A2 对于静态配置,很明显如何实现问题中的问题: @Module({}) export class AModule { static forRoot(options: AModuleOptions): DynamicModule { const imports = []; if (options.includeA1)

如何使用nestjs配置winston服务?

我有一个基本的nestjs应用程序,我正在尝试使用winston作为记录器服务。。。这破坏了我的应用程序,我真的不知道如何修复/恢复它。 我已尝试再次卸载winston软件包、rm node_模块和npm安装,但没有任何效果 node -v: v11.15. nest -v: 7.1.5 yarn -v: 1.22.4 npm -v: 6.14.5 我得到的错误是: [11:37:19 AM] Found 0 errors. Watching for file changes. intern

nestjs上传文件和图像系统

我想创建一个文件上传部分。 我将以下代码按顺序排列: app.module.ts: imports: [ MulterModule.register({ dest: './uploads', }), ] files.controller.ts: @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file) { console.log(fi

NestJS Swagger中的可选参数

对于API服务器,我有一组模型,例如 Recording <-> Artist 录音艺术家 在字体上有许多关系。需要在两侧模型中定义关系 在某些路线中,我仅显示录制,在某些路线中,我还使用LeftJoin和Select显示艺术家的录制。例如/api/艺术家和/api/艺术家与录音 但是,生成的文档总是以艺术家的身份显示录制的内容 是否有一些简单的方法来修改招摇输出 我可以用招摇过市的标记创建不同的模型对象,但在更多的上下文中创建更多的对象可能会变得非常混乱。经过更多的搜索,我找

用Redis实现NestJS外部事件总线

我正在尝试将我的nestjs应用程序的cqrs设置与外部消息服务(如Redis)集成。我在nestJS github上找到了一个和一个,说明我应该能够将我的查询/事件/命令总线与外部服务集成在一起,因为cqrs的7.0版已经存在 我一直在尝试实现这一点,但在nestjs中找不到关于这个主题的太多信息。我唯一能找到的就是一个和一个关于如何实现这一点的github教程。我在github上找到了关于这个主题的有限帮助,因此我成功地替换了默认的发布者和订阅者,但我真的不明白如何使用它连接到外部服务,或者

在Nestjs中使用类验证器验证嵌套对象

我在验证嵌套对象时遇到困难。使用类验证器运行nestJs。顶级字段(名字、姓氏等)验证OK。概要文件对象在顶层验证正常,即如果我作为数组提交,我会返回正确的错误,即它应该是一个对象 但是,配置文件的内容未经验证。我已经按照文件上的建议做了,但也许我遗漏了什么 有人知道如何验证嵌套对象字段吗 export enum GenderType { Male, Female, } export class Profile { @IsEnum(GenderType) gender

如何在NestJS中处理BodyParser错误(以及一般的中间件错误)

我试图用NestJS处理bodyparser错误,但我不知道如何处理 这就是我到目前为止所做的 梅因酒店 及 catch-all.filter.ts 但是,如果我试图通过邮递员发送带有格式错误的JSON的req,服务器就会崩溃 知道该怎么做吗?因为这是在NestJS上下文之外发生的错误(它使用库),所以必须使用express中间件来处理 尝试实现一个可以检测和处理这些错误的方法。例如: app.use((err,req,res,next)=>{ 如果(语法错误的实例错误)&& err.statu

如何使用nestjs中的HttpService取消请求

当用户取消请求时,将触发以下命令: request.on('close', () => { // console.log('request is closed .....') Here I want to cancel download }) 在close事件中,我想取消HttpService请求。 完整代码: export class FileController { constructor(private readonly _httpService: HttpServ

具有请求范围服务的NestJS计划或生命周期事件

我正在使用@nestjs/schedule包,但我不明白如何在请求范围中使用它。 我有一个默认请求范围的服务,但它有另一个作为请求范围依赖项的服务。如果我从构造函数中删除该请求范围的服务,我可以使用cron和onModuleInit作为例子,但在构造函数中使用该服务根本不起作用。换句话说,如果此服务具有另一个请求范围的服务或多个服务作为其依赖项,则我无法计划服务方法。 在应用程序启动时,是否有任何选项来安排此类服务方法? 谢谢你的回答

Nestjs 覆盖全局管道

如何覆盖全局管道。我试过这个,但没用:( 这就是我如何覆盖全局 // mycontroller @Put(":id") @UsePipes(new ValidationPipe({ groups: ["must_only"] })) async change(@Body() userDTO: UserDTO, @Param('id') id) { //.... some code } // mycontroller @Put(":id") @UsePipes(new Validatio

NestJs |设置最大标题大小

我正在NestJs中实现API,并且是这个框架的新成员。对于我的一个API,我得到的错误如下 Status Code: 431 Request Header Fields Too Large 为了解决这个问题,我想更改NestJs配置中的最大头大小。在NestJs应用程序中,在何处更改此配置

如何在NestJS独立模块中使用Winston Logger,该模块不';不要使用类

我试过几种不同的方法 目前我无法将Winston设置为NestJS的默认记录器,因为它抱怨实例中没有“getTimestamp”函数 因此,对于NestJS中的控制器,我使用了依赖项注入,这对api(REST端点)很好 问题是我已经离开了OOP,所以我所有的库都是用typescript作为函数编写的。不是纯粹的函数,但比OOP方法更好(bug更少!) 我的问题是-如何在没有类的库中访问主winston logger 我正在使用温斯顿图书馆。你试过这个吗 使用createLogger函数在应用程序

nestjs扩展了jwt保护

为了检查用户表中是否存在用户,我扩展了jwt guard。以下是我的代码: import { ExecutionContext, Injectable, UnauthorizedException, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { error } from 'console'; import { UsersService } from 'src/users/

Nestjs同时设置http和https服务器

我正在尝试设置http和https服务器 咨询 这是我的main.ts文件 import * as fs from 'fs'; import * as http from 'http'; import * as https from 'https'; import * as express from 'express'; import { NestFactory } from '@nestjs/core'; import { ExpressAdapter } from '@nestjs/pla

使用带有代码优先方法的NestJS GraphQL插件检测字段类型时遇到的问题

今天,我将使用NestJS构建的GraphQLAPI升级到了版本7 我已将项目设置为使用新的,但在尝试映射其中一个类时出现以下错误: (节点:67283)未处理的PromisejectionWarning:错误:无法确定auth的GraphQL输出类型 这里的nest cli.json: { "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { "tsConfigPath":

在NestJs中配置依赖动态模块的最佳方法

我一直在努力寻找最好的方法来处理导入在同一范围内具有相互依赖关系的嵌套模块 我的特定用例是一个大型monorepo,其中包含多个微服务应用程序,这些应用程序需要一组通用组件(如数据库、传输等)的特定配置/设置。我的目的是提供一个“汇总”模块来标准化配置过程 问题在于,模块导入阵列中的模块似乎彼此完全隔离。虽然我可以使用@Global,但它违背了模块级隔离的目的,坦率地说,它感觉有点脏 我尝试过的简化版本: @模块({}) 导出类章节模块{ 静态注册表同步(配置:IChaptersAsyncCon

Nestjs 如何定位包含异常的真实文件

当我的应用程序崩溃时,nestjs处理了一个异常,但我无法获得真正的问题文件 异常堆栈: [Nest] 17946 - 4/18/2018, 5:00:56 PM [ExceptionsHandler] duplicate key value violates unique constraint "uk_app_name" QueryFailedError: duplicate key value violates unique constraint "uk_app_name"

如何在导入的模块/控制器中访问创建的NestJS ApplicationContext?

我对NestJs比较陌生,我想知道如何从导入的模块或控制器访问在服务器引导中创建的非应用程序上下文?我正在NestJS之上构建一个框架,需要访问框架提供的特定类型组件/服务等列表,以及使用该框架编写的应用程序 对于模块,您无法执行此操作,因为它们将在启动ApplicationContext之前被调用。根据您的情况,可能有帮助的是 对于控制器,您可以使用,它允许您从ApplicationContext动态导入任何内容 需要特别注意的是{strict:boolean}-选项 onModuleIni

Nestjs js TypeORM如何根据标头在运行时切换数据库连接

我有两个数据库,并希望根据http请求发送的头使用其中一个数据库 有人知道如何在Nest中动态切换TypeForm连接吗?谢谢 通过nestjs使用多个数据库非常容易。官方文件对设置它们有很好的解释 首先,您可以在AppModule中注册数据库 const defaultOptions = { type: 'postgres', port: 5432, username: 'user', password: 'password', database: 'db', sync

Nestjs 如何使用DTO将响应设置为swagger响应中的数组

一些dto.ts 导出类CreateCatDto{ @ApiProperty() 名称:字符串; @ApiProperty() 年龄:人数; @ApiProperty() 品种:弦; } 我不想得到这样的回应: @ApiOkResponse( 描述:“Cat对象”, 类型:CreateCatDto ) 但我的响应必须是类似dto对象的数组。 我想要像苏一样的smth ApiOkResponse( 描述:“记录已成功删除。”, 模式:{ 键入:“数组”, 特性:{ obj:{ 类型:Creat

NestJS-使用DotEnv

我正在使用NestJS和TypeOrm(MySQL)。 项目本身由Terraform提供,由Jenkins运行并部署在K8上 我将对DB连接使用process.env.******,并且 当涉及到部署(测试、阶段和产品)时,我真的不在乎。Jenkins提供凭证(由Terraform提供) 但是,我希望有一个本地模式,在本地启动服务对其他开发人员来说是友好的 在我以前的项目中,我在根目录中有额外的文件。该文件是唯一的包装器,它加载dotenv,然后加载主应用程序文件 大概是这样的: require

Nestjs 如何在TypeForm中限制和跳过相关列

我试图在使用query builder查找时限制相关数据,但我忽略了这个概念 这是我获取员工订单的代码 import { getRepository, Repository } from "typeorm"; public async findEmployeeQuery(id : number) { try { let query = await getRepository(Employees) .cr

如何向NestJS中的其他模块公开TypeORM存储库

我将所有与数据库相关的操作移动到一个独立模块中: @模块({ 进口:[ TypeOrmModule.forFeature([ PostRepository, 用户存储库, 评论库, ]), ], 导出:[PostRepository、UserRepository、CommentRepository], 提供者:[PostsDataInitializer], }) 导出类数据库模块{} 但是在其他模块中,当我导入DatabaseModule并尝试在服务类中注入PostRepository时,我得

如何在NestJs中测试模块

我正在为一个项目添加测试并提高覆盖率。我想知道如何在NestJs中测试模块定义(mymodule.module.ts文件)。 特别是,我正在测试一个导入其他模块的主模块,其中一个模块初始化db连接,这意味着我需要在另一个模块上模拟服务,以避免真正的db连接。 此时此刻,我有这样的想法: beforeEach(async () => { const instance: express.Application = express(); module = await NestF

Nestjs 如何修复@nest模块/mailer服务注入?

我正在尝试使用@nest modules/mailer。我创建了一个模块“example.module.ts”和服务“example.service.ts”。我在app.module.ts中加载mailer模块,如文档所示。当我将其注入ExampleService时,nest抛出以下错误: [ExceptionHandler] Nest can't resolve dependencies of the ExampleService (?). Please make sure that the

您可以使用NestJS将WebSocket与微服务一起使用吗

我想了解一下Nestjs的概念,我想知道你是否可以在Nestjs中使用带有微服务的WebSocket 我已经使用microservices建立了一些项目,microservices有一个直接的TCP/IP连接,但是使用一个外部应用程序测试它是一件非常痛苦的事情。如果您将WebSocket用作网关,并且仍然使用微服务,那么我不理解使用直接TCP/IP的好处

Nestjs循环依赖项forwardRef()缺陷

说: 当两个类相互依赖时,就会出现循环依赖关系。例如,类A需要类B,类B也需要类A。循环依赖可能出现在模块之间和提供者之间的嵌套中 虽然应该尽可能避免循环依赖,但是 不能总是这样 不使用forwardRef()的原因是什么?循环依赖通常意味着您有紧密绑定的逻辑和可能不稳定的体系结构,不允许您进行扩展。如果你真的不想关心这一点,你可以随意加入forwardRef构造函数和服务,但这可能会导致一些奇怪的、难以解决的错误,在Nest社区中通常被视为一种不好的做法。非常感谢你的回复。我在Auth模块中使

Nestjs的招摇过市代码

我已经用Swaggerhub创建了API端点,并成功导出到asp.net core中运行。我想用nestjs测试相同的API,但我发现用openapi编写文档,而不是相反;将yaml转换为nodejs。有没有办法从OpenAPI3.0模式中使用typescript生成nestjs?我相信可以帮助您实现这一点。我相信可以帮助您实现这一点。Swagger Codegen目前不提供nestjs生成器。这是一个相关的请求,但似乎还没有人找到时间做出贡献: 更新:OpenAPI generator中有添加

理解nestjs中的身体装饰器

引用@body有效载荷的对象存储在哪里 如果您的用户控制器具有post功能 @Post()@HttpCode(HttpStatus.CREATED)create(@Body()用户:IUserBase): 承诺{返回this.usersService.create(user);} 用户变量存储在哪里? 它是否存储在nest.js服务器的请求对象中?它作为参数注入函数中 @body装饰者基本上说: 请将到达请求正文的json转换为IUserBase类型,并将其作为此控制器处理程序的参数

使用nestJs&&;类验证器

我正在开发一个DTO(数据传输对象),在这里我直接根据类验证器提供的内容进行验证 以下是一个示例: import { IsDefined, IsNotEmpty, Min, ValidatePromise } from 'class-validator'; export class UpdateMentorParamDto { @IsDefined() @IsNotEmpty() @Min(1, { message: 'the Id in the params is sup

nestjs tyoeorm中两个存储库之间的事务

根据您的说法,在两个存储库之间进行事务处理的过程是什么? 示例:我想与我的CompanyRepository&UserRepository进行交易,因为某个用户属于某个公司。我想确定它是全部还是全部:wink:有什么想法吗?您可以基于连接初始化事务,并在事务内部使用EntityManager: export class DemoService { constructor(private readonly connection: Connection) {} save(userData,

NestJS Nest can';t解析用户服务的依赖关系

我正在尝试创建我的自定义JwtModule。我制作了JwtModule动态模块,以便使用dotenv提供私钥 jwt.module.ts: 从'@nestjs/common'导入{DynamicModule,Module}; 从“./jwt.constants”导入{CONFIG_OPTIONS}; 从“/jwt.interfaces”导入{JwtModuleOptions}; 从“/jwt.service”导入{JwtService}; @模块({}) 导出类JWT模块{ 静态forRoot(

无法在NestJs中正确添加模块依赖项

我对NestJs和nodejs都是新手。我正在尝试实现以下内容,但出现了错误 我在实体文件夹中有几个实体[参见图片] 我有一个存储库文件夹,其中有一个自定义存储库,organizationRepository.ts如下所示 我有一个dao文件夹,其中有一个文件OrganizationDao.ts,如下所示 最后是一个名为organization的域文件夹,它是3个文件:organization.controller.ts、organization.module.ts和organization.s

Nestjs服务器不为socket.io客户端提供服务

我有一个在服务器上使用nestjs的拆分应用程序和一个Angular应用程序作为客户端。使用@nestjs/websockets模块和我使用的客户机ngx socket io设置带有socket.io的websockets似乎非常简单。我以此为基础。现在,当我将项目的@nestjs/websockets依赖项更新到最新版本时 CORS错误和 客户端无法加载socket.io客户端js文件时出错 我预计CORS会出现问题,在更新之后,我可以通过添加 app.enableCors({ 来源:'

SpyOn TypeORM存储库更改单元测试NestJS的返回值

我想为我的TypeORM数据库调用联合测试角落案例。我已经用有效数据模拟了我所有的TypeORM存储库。但是我想监视存储库并更改TypeORM的返回值。我该怎么做 从'@nestjs/common'导入{INestApplication}; 从'@nestjs/testing'导入{Test}; 从'@src/common/common.module'导入{CommonModule}; 从“/auth.service”导入{AuthService}; 从“typeorm”导入{Repositor

每次调用NestJS方法时手动实例化类

我有一个服务,每次调用该方法时都需要实例化其他类。 例如 类SomeClass{…} @注射的 类服务{ 构造函数…{} 异步doStuff{ 每次新建SomeClass//新实例; } } 我如何才能正确地将它注入到某个类中,并在每次调用doStuff方法时创建它的实例?如果您每次只需要为该方法实例化该类,那么您已经在做的事情就可以了。如果要实例化那个类,没有理由引入依赖注入,因为Nest的DI系统将为您的应用程序实例化它

在nestjs中是否有一种方法可以动态订阅websocket服务器中的事件

我想看看是否有一种方法可以动态使用@SubscribeMessage()装饰器 到目前为止,我已经能够听到类似方法(a)中的“已知事件”。但我希望在控制器中动态生成事件名称,并开始在网关中侦听它 或者,我想监听该套接字上发出的所有事件,并按照方法2处理它们 方法(a): @SubscribeMessage('event1') handleMessage(args[]){ // DO STUFF } @SubscribeMessage(MY_DYNAMIC_EVENT_AT_

Nestjs 如何在具有嵌套会话的保护中使用会话对象

在NestJS中,使用nest session,我想在一个保护中使用session对象(CanActivate) 在控制器的操作中,这是通过使用@Session()完成的但我找不到也不知道如何使用保护获取这些数据。首先,创建一个包含会话对象并扩展express Request对象的接口,因为会话对象是nestjs创建的字段,在请求对象上不存在 从“express”导入{Request}; 导出接口IRequest扩展请求{ 届会:任何; } 然后,您必须导入接口,创建此类型的变量,然后使用执行

NestJS+TypeForm中的JoinTable问题

我在NestJS+TypeORM中遇到了一个奇怪的问题 基本上,我在一个实体中创建了一个多个关系,并且在关系的拥有方添加了@JoinTable,没有参数 运行nest build后,entity.js文件将添加一个新的导入常量浏览器\u 1=requireTypeForm/browser;,我发现,在编译的JS文件=>browser_1.JoinTable中声明JoinTable选项时使用了它 问题是,在使用typeorm生成新的迁移文件时,我不断遇到以下错误: import { __await

如何清理NestJs中的数据?

以前有一个问题,但没有答案。 由于expresss sanitizer已被弃用,我想知道如何正确清理NestJs查询中的数据 我可能会为此使用一个全局和自定义管道,但老实说,我不知道如何将…字符串替换为经过适当清理的格式 你知道有什么npm软件包可以帮助你解决这个问题吗?看看这个问题。我认为最好的选择是使用类似或的包从字符串中剥离javascript代码。然后用定制的烟斗包装。干杯!我认为有一个更清洁的解决方案可以解决这个问题,但不幸的是,我担心Nestjs没有为我们提供专用的消毒剂(这将是一个

Nestjs 类型化AWS RDS代理集成

我试图在nestjs应用程序中使用RDS代理和TypeORM。RDS代理使用IAM身份验证,因此我在15分钟后收到身份验证错误。请让我知道是否有办法使TypeForm在令牌过期之前刷新令牌。(在nestjs lambda函数中,orm类型作为应用程序模块的一部分加载)您可以通过IAM角色授予ec2访问RDS的权限 如果要在本地连接。 无需通过代码传递凭据 或 安装aws cli 运行:aws配置 添加密钥、访问密钥和会话令牌,它们应该可以访问您的RDS。 这将在.aws/credentials

在nodejs/express项目中使用NestJs包

我开发了一个nest JS模块。我使用npm publish在npm上发布了它 现在,我想在基于nodejs和express构建的项目中使用该NestJS模块 请告知我是否可以在node/express项目中使用nestjs模块。如果是,是否有相关文件 根据用户的评论,添加了一些详细信息 这是一种库,它有一个模块,导出的方法很少。这些方法包含调用aws sns服务以发送推送通知的实现 我发现一个链接现在正试图使用它 提前感谢。因为NestJS模块本身就是express应用程序的模块,所以要使该

如何取消订阅NestJS中的所有订阅?

我所有的方法都是用RxJS编写的 我知道RxJS订阅需要在作业完成后取消订阅 是否自动取消所有订阅 还是我必须自己做 如有任何意见或建议,将不胜感激。提前谢谢。这取决于您如何使用它们。你能分享代码片段吗?这取决于你如何使用它们。你能分享代码片段吗?

nestjs中有多个全局前缀

从'@nestjs/core'导入{NestFactory} 从“./app.module”导入{AppModule} 异步函数引导(){ const app=wait NestFactory.create(AppModule) 附录setGlobalPrefix(“v1”) 附件setGlobalPrefix(“v2”) 等待应用程序。聆听(3000) } bootstrap() 我想要两个版本的API,所以想知道如何设置两个全局前缀?据我所知,您不能使用setGlobalPrefix来实现这

Nestjs未从ConfigModule获取dotenv值

在Nestjs中设置不适合我。甚至我也从中删除了.env.env仍在加载中,而不是.evn.development 是因为我在使用吗?没有提到任何矛盾 import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ ConfigModule.forRoot({ envFilePath: ['.e

Nestjs在完成从服务到控制器的执行之前发送数据

我有一个控制器和服务。从服务中,我向控制器发送登录成功数据。但它在服务中完成执行之前发送数据。但我正在尝试在loginservice中完成执行后发送数据 我需要在完成登录功能后返回用户数据 用户服务 import { Injectable, NotFoundException, UnauthorizedException } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import * as jwt

上一页 1 2 ...  9   10    11   12   13   14  ... 下一页 共 14 页