我有一个使用@controller'tasks'装饰器的控制器。在这个控制器中,我有一个路由@Get'/week,通常请求应该转到localhost:4000/tasks/week,但它返回了一个错误的请求:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed (numeric string is expected)"
}
下面是我的代码:
@Controller('tas
在nest.js中,express中res.locals的等效值是什么?
换句话说,我可以通过什么方式在中间件和控制器之间传递有关用户的数据?
在nestjs中,通常会将该数据分配给请求,因为正如您所说的,直接使用响应将中断拦截器和中间件的管道
从控制器页面:
从拦截器页面:
您是否尝试过查看nest.js和?响应对象可以提供给两者,也可以像在原生express应用程序中一样进行操作。我做到了,如果我使用响应对象,我就不能再使用拦截器了。
我正在尝试使用NestJS框架创建一个应用程序,我想检查应用程序上下文中是否有特定的服务,但是,框架的默认行为是在上下文中找不到服务时退出流程
我已经用try…catch包围了get方法,但由于process.exit(1)执行,它无法工作
专用异步loadConfigService(服务器:INestApplication):承诺{
试一试{
this.configService=wait server.get(configService,{strict:false});
}捕获(错误){
t
我正在配置nestjs或mconfig.json,但typeorm没有连接到mysql 8数据库,它会在cli中显示这一点
[Nest] 13324 - 2020-01-14 4:15:32 [NestFactory] Starting Nest application...
[Nest] 13324 - 2020-01-14 4:15:32 [InstanceLoader] AppModule dependencies initialized +513ms
[Nest] 133
标签: Nestjs
class-validatorclass-transformer
我正在使用类验证器包验证我的DTO。我通过
app.useGlobalPipes(
new ValidationPipe({
transform: true,
}),
);
在我的main.ts文件中,如文档中所述
我的DTO中有一个可选的配置字段。如果此字段不存在,则应将其转换为空对象。这里描述了转换装饰器
我希望能想出这个解决方案:
export class MyDTO {
@IsObject()
@IsOptional()
@Transform(confi
我对这些关系有点困惑,因为我习惯于按id保存关系,而我找到的文档和示例建议获取整个对象并使用它(这难道不奇怪吗?)
我在github上发现了这个问题(),他们建议只使用id属性的对象,但这是2017年发布的。这是一个好方法吗?这仍然是唯一的方法吗?(我觉得这很蹩脚)
异步创建(@Body()product:product){
product.category={id:product.category};
返回{有效载荷:等待this.repository.persist(product)};
}
我想将用户重定向到服务器中的另一个url,但我不想硬编码url,如res.redirect('/hello\u world')。相反,我只想指定指定控制器的处理程序url,如res.redirect(HelloWorldController.handlerName.url)其中HelloWorldContoller是
@Controller()
export class HelloWorldController {
@Get('hello_world')
handlerName(
查看Netsjs文档,我可以看到一般的方法是利用CacheInterceptor进行控制器级缓存
我希望实现的是服务/DB级缓存-用例主要用于其他服务所需的静态DB数据,是否有方法扩展提供的缓存模块以从服务中使用?您可以使用此处列出的缓存存储之一:
然后,只需在缓存模块()中注册该存储:
我也在寻找这样做的方法
目前,我通过在服务中注入cacheManager实例并直接使用它,在一些研究的基础上使其工作
import { CACHE_MANAGER, Inject, Injectable } f
标签: Nestjs
class-validatornestjs-swagger
目前,我在控制器中使用DTO对象,并将它们与类验证器插件配对,以解析/验证它们。问题是,我想为一些DTO参数指定默认值,但这些值应该来自配置。我需要一些优雅的方法将这些默认值注入DTO,并在各个端点的swagger元信息中自动填充这些默认值(我正在使用nest swagger插件为我自动应用装饰器)。为了达到预期的效果,我看到了两种解决方案,它们都需要一些不必要的折衷
解决方案1:
将配置值注入控制器本身,并在路由处理程序中解析DTO后,将参数和DTO传递给将在DTO上应用它们的方法。但是,为了
我想知道使用TypeForm选择固定数量关系的最佳方法,例如,如果我有UsersEntity和PublicationsEntity,用户有100多个出版物,我只想选择其中10个,实现这一点的最佳方法是什么
几年前有人问过类似的问题,但我一直没能做到:
没有任何限制,我的代码如下所示:
return await getRepository(UsersEntity)
.createQueryBuilder('user')
.where('user.userName =
我目前有两个模块:
处理登录和注册的Auth
User处理所有用户crud操作
Auth要求User模块注册和验证用户。因此,当前,Auth导入User模块:
@Module({
imports: [UserModule],
components: [JwtStrategy, GithubStrategy, TokenService, LoginService],
controllers: [AuthController],
})
然而,如果我想重用这些模块,我就必
使用springboot,您可以使用resposne内容类型(@Response(product=APPLICATION\u JSON\u stream\u value)向用户发送一个值流(如服务器发送的事件)那么如何在nestjs中使用它呢?如果我非常了解您的需要,您可以将响应的内容类型设置为application/octet stream。这将允许您将流发送到客户端,就像文件一样。例如,如果我非常了解您的需要,您可以将响应的内容类型设置为application/octet stream。这将
我已经创建了guest的模块这是我的service.ts文件
import { Test, TestingModule } from '@nestjs/testing';
import { GuestsService } from './guests.service';
describe('GuestsService', () => {
let service: GuestsService;
beforeEach(async () => {
const modul
我将NestJS与Typeorm配方一起使用,我对这两种方法都是新手。我们正在从Loopback3迁移,在Loopback3中,所有这些都是使用框架的基本特性实现的
对于我们实体之间的许多关系,我们有以下场景:
实体A带有“id”和“代码”字段,这两个字段都是主字段,但只有“id”是自动生成的,“代码”来自其他逻辑,并且始终保证是唯一的
实体B带有“a_代码”字段,该字段是实体a的外键
我们在A级有:
@PrimaryGeneratedColumn()
id: number;
我正在尝试对一个路由进行e2e测试,该路由具有来自nestjs passport模块的AuthGuard,但我真的不知道如何接近它。当我运行测试时,它会说:
[ExceptionHandler]未知的身份验证策略“承载”
我还没有嘲笑它,所以我想这是因为它,但我不知道如何做到这一点
这就是我到目前为止所做的:
player.e2e-spec.ts
import { Test } from '@nestjs/testing';
import { INestApplication } from '@
AWS X-Ray支持Express和Restify中间件,但不支持Nest.js。
Nest.js无法打开和关闭AWSXRay的段,因为它使用typescript装饰进行路由。
如何在Nest.js中使用AWS X-Ray,这是一种非常有趣且难以处理的情况。当然,您可以在标准的Nest中间件(看起来就像Express中间件)中设置OpenSegment调用,但是closeSegment有点困难。我认为(我在这里做了一个很长的尝试,因为我没有真正的方法来测试这一点)您可以创建一个拦截器并将Htt
我有一个monorepo,它使用nx和多个node/nestjs应用程序。有些应用不需要其他应用中使用的所有软件包。因为它是monorepo,所以我需要在部署期间为每个应用安装所有软件包
有没有办法在构建时生成一个package.json,它只包含我正在构建的应用程序所需的包
我尝试使用“generate package json webpack plugin”生成package.json,但它只检测到一半的依赖项
我还尝试构建一个包含所有应用程序的单一js文件,但它似乎不起作用,而且总是需要t
我跟随开始使用队列。我安装了@nestjs/bull,bull,@types/bull依赖项。这是我的app.module.ts:
@模块({
进口:[
ConfigModule.forRoot({
加载:[配置],
}),
BullModule.registerQueue({
名称:“创建_签入”,
redis:{
主机:“localhost”,
港口:6379,
},
}),
事件模块,
],
})
导出类AppModule{}
我在根模块中导入了BullModule。这是我的event.
我刚刚在一个简单的nest控制器上测试了性能,该控制器在get请求中返回文本(无数据库)。
以及与express相同的简单GET控制器(中间件)
我使用WRK工具来测试性能
因此,plain express的速度是nestjs的2倍。
为什么nestjs会产生这么多开销 更新-2020年3月17日
我们现在正在为每一个新的PR运行基准。最新的基准之一可以在这里找到:
这意味着Nest+FastifyAdapter现在几乎比express快了两倍
更新-2018年9月22日
基准测试目录已添加到存
因此,在使用nestjs开发一个简单的REST端点时,我发现了一个小问题
我有一个名为JoiValidationPipe的管道,它使用Joi对象验证请求主体。一切正常,但如果请求同时包含body和param,我会遇到一个问题:
@补丁(':id')
@UsePipes(新JoiValidationPipe(CreateComicSchema))
async updateComic(@Body()comic:comic,@Param()params){
comic.id=params.id;
返回
我有一个NestJs应用程序,它使用两种服务。连接到Db的DbService和执行速度相当慢并使用注入的DbService的SlowService
现在,应用程序将提供api基本路径之外的健康路由,因此我需要一个不同的模块,为健康路由提供控制器
我创建了一个基本模块
import { Module } from '@nestjs/common'
import { SlowService } from './slow.service'
import { DbService } from './db
我不知道我的问题在哪里。我得到以下错误:
嵌套无法解析BService(?,AService)的依赖项。请
确保索引[0]处的参数在CModule中可用
上下文
我有3个模块,A,B,C
C应该能够使用B提供的服务,B应该调用A提供的服务
A和B各有一个TypeForm导入和一个实体
代码如下:
app.modules.ts:
@Module({
imports: [
TypeOrmModule.forRoot(),
CModule
]
})
export class A
我正在开发一个EmailModule,它可以读取一个哈巴狗模板
我无法使生成包含*.pug模板文件:
我遵循了基于以下内容的说明:
在nest-cli.json中添加资产属性
"email": {
"type": "library",
"root": "libs/email",
"entryFile": "index",
"sourceRoot": "libs/email/src",
"compilerOptions": {
"tsConfigPath": "lib
我已经实现了一个代码,由
从'@nestjs/common'导入{Type}
从'@nestjs/typeorm'导入{InjectRepository}
从“DataLoader”导入*作为DataLoader
从“lodash”导入{keyBy}
从“typeorm”导入{Repository}
导出接口IDataService{
只读存储库:存储库
加载:(id:string | number)=>Promise
loadMany:(id:Array)=>Promise
}
类型构造函数
我创建了一个简单的NestJS项目,其中包括两个OnModuleInit服务
PrismaService用于启动PrismaClient
@Injectable()
导出类PrismaService
扩展PrismaClient
实现OnModuleInit、OnModuleDestroy
{
异步onModuleInit(){
等待此消息。$connect();
}
异步onModuleDestroy(){
等待此消息。$disconnect();
}
}
DataInitializer用于
我将csvReader与nestjs一起使用,并将“on”事件中的函数标记为async,将save to DB标记为wait
“打开”事件似乎不会等待保存完成,并在处理文件后打印日志消息
代码如下所示:
const CsvReadableStream = require('csv-reader');
const Fs = require('fs');
const path = require('path');
@EntityRepository(UserTitle)
export class U
我正在生成api文档。但是如何为经过身份验证的路由生成文档
嵌套版本
λ nest i
NodeJS Version : v10.16.0
[Nest Information]
platform-express version : 6.0.0
passport version : 6.1.0
swagger version : 3.1.0
common version : 6.0.0
core version : 6.
如何为多个模块使用公共服务
我有服务
@Injectable()
export class TestService {
test(): number {
return 123;
}
}
我在应用程序模块中注册了它
providers: [TestService],
exports: [TestService]
我想在产品模块和其他模块中使用它
@Module({
imports: [TestService],
controllers: [ProductsCon
我有一个带有create、list和update方法的服务类来修改实体
我在列表方法中设置了redis缓存,缓存键是list\u cache\u 1,list\u cache\u 2,…
我的问题是,如何删除create或update方法中的所有相关缓存,如
this.connection.queryResultCache.remove([`list_cache:*`]);
通过QueryBuilder设置“缓存id”时:
const users = await connection
我想根据本文档提供一些静态目录结构,但可以找到以下简单问题的答案:
如何设置路径前缀,如“/some/path/to/files”
如何在运行时设置服务(文件路径是动态的,不能硬编码)
提前谢谢
另外,我看到了一些关于app.useStaticAssets()的答案,但据我所知,这是特定于Express的解决方案,无论如何都不会使用最新版本编译(属性“useStaticAssets”在类型“INestApplication”上不存在)
更新
例如,我有以下目录:
/var/lib/app/dat
标签: Nestjs
angular-universalangular-fullstack
错误[NetworkError]是什么意思
我使用ng universal拥有一个Nestjs后端和一个角度前端。我正在运行带有“npm run dev:ssr”的fullstack应用程序。每当我在浏览器中刷新前端页面时,服务器终端都会以红色显示“ERROR[NetworkError]”的新行输出。当我发出任何网络请求时,当我向为应用程序提供服务的本地主机端口发出请求时,它不会出错。如果api请求是在重新加载时向服务器OnInit发出的,请在使用ng universal示例时首先检查isPla
我有两个微型服务。第一个微服务是前端服务器,它请求第二个微服务实例之一中的一些工作。NATS传输的最佳解决方案是排队。我可以发送消息,NATS将只发送给其中一个实例。但是,如果我需要向每个队列实例发送消息或事件
前台服务:
//module
providers: [
...,
{
provide: 'CLIENT_PROXY_FACTORY',
useFactory: (configService: ConfigService) => {
我在Nest.js上运行TFjs时遇到问题。
npm运行启动
嵌套类型脚本-starter@1.0.0启动/主页/vvm/学习/NESTS
筑巢开始
node_modules/typescript/lib/lib.dom.d.ts:16532:11-错误TS2430:
接口“WebGL2RenderingContext”不正确地扩展了接口
“WebGL2RenderingContextBase”。属性“clearBufferfv”的类型为
不相容的
类型“(buffer:number,drawb
我使用TCP协议构建了一个Http应用程序和两个微服务
这是我的应用程序图
我试图通过@Messagepattern()从帐户服务向好友服务发送消息
为每个服务设置ClientProxy。但它不起作用
我读过官方文档@nestjs/microservices,但我不知道哪一个是合适的
是否有正确的方法将消息从一个微服务发送到另一个微服务?您需要设置消息代理,如RabbitMQ或Kafka,即对于RabbitMQ,输入下面的命令并创建RabbitMQ容器
docker run -it --rm
我有两个表账户和地址帐户依赖于地址含义要创建帐户,必须先创建地址,然后获取其地址.id
如果地址创建失败或帐户创建失败,我不能依赖我的数据库
因此,我必须运行一个事务
如果我在我的提供者中运行一个事务,该类注入所有必需的服务,以便执行我需要的操作,即帐户创建,在我的情况下,它使用地址服务和帐户服务,我被告知这是一种反模式,因为事务和与数据库相关的一切都必须在存储库中运行
但是怎么做呢?我必须在两个不同的存储库中运行操作addressRepository和accountRepository
当您在
我有一个基本的控制器设置:
@Controller('')
export class AController {
@Get(':id')
async getThing(@Param('id', ParseUUIDPipe) id: string): Promise<RegisterRead[] | IntervalRead[]> {
return id
}
}
另请参见:导致此问题的原因是我没有指定版本。它将版本显示为可选字段,但似乎是必需的:
new Par
已使用“nest new”命令启动新项目。工作正常,直到我添加实体文件到它
出现以下错误:
从“typeorm”导入{Entity,Column,PrimaryGeneratedColumn}
^^^^^^
SyntaxError:无法在模块外部使用导入语句
我错过了什么
将实体添加到模块:
import { Module } from '@nestjs/common';
import { BooksController } from './books.controller';
import {
我尝试启用nestjs cors,但没有成功
以下是各种从未奏效的方法。
即使在下面的配置之后,nestjs似乎也不会对选项请求做出任何响应
尝试过的解决方案
在上测试的浏览器
Firefox64.0
chrome版本75.0.3770.90(官方版本)(64位)
平台
Linux Mint 19
目标
使用React使用nestapi
我找到了让它工作的方法,我使用了cors软件包并将其抵押给nest应用程序
const app = await NestFactory.create(Ap
有人能解释一下这个代码吗?我不明白他们为什么加上“?”标记。他们中的一些人有“!”而不是问号。
这是什么意思?这是一个真正的打字问题,而不是打字
定义类似以下内容的属性时:
类型Foo={
项目1:编号
}
您是说prop1是可选的
当属性前面有时这意味着您告诉Typescript不要警告您没有在构造函数中初始化它(在严格模式下它通常会抱怨)
例如:
class-Foo{
//Typescript不会抱怨'a',因为我们在构造函数中设置了它
公众a:数字;
//Typescript会抱怨'b'
我正在尝试做一些奇特的事情:一个DynamicModule,它根据提供程序选择一个控制器/提供程序。提供程序在onModuleInit读取数据库中的配置,因此无法硬编码其值
这类似于这个问题:它从未得到回答
我尝试过几种方法,最接近的方法是:
导出类FancyModule实现DynamicModule{
公共模块:类型;
公共控制器:类型[];
公共提供者:提供者[];
建造师(
@注入(StartupConfigService)专用只读启动:StartupConfigService,
) {
我正在使用NestJS,我正在尝试让参数自动转换工作。
我添加了以下代码:
app.useGlobalPipes(
new ValidationPipe({
transform: true,
}),
);
我有一个控制器,它接收一个数字参数:
@Get(':id')
getStuff(@Param('id') id: number) {
...
}
问题是,当我尝试使用非数字参数(path/to/controller/one而不是path/to/controller/1)
标签: Nestjs
typeormtypeorm-datamapper
在我的NestJS项目中,我有以下类型查询:
const users = await this.usersRepository.find({
skip,
take,
order: sortingObject,
join: {
alias: 'user',
leftJoinAndSelect: {
country: 'user.country_id',
},
},
});
现在我只想返回名称中带有John的用户。在SQL
模块Auth导出保护AuthGuard
从'@nestjs/common'导入{Module};
从“./auth.guard”导入{AuthGuard};
@模块({
提供者:[AuthGuard],
出口:[AuthGuard]
})
导出类AuthModule{}
我是AuthGuard
从'@nestjs/common'导入{CanActivate,ExecutionContext,Injectable};
从“rxjs”导入{Observable};
@可注射()
导出类AuthGu
我有一个路径/users来获取用户列表,控制器方法需要获取当前用户,还需要验证输入查询参数。所以我这样写:
@useGuard(AuthGuard('jwt'),RolesGuard)
@角色(UserRole.GLOBAL、UserRole.ORG)
@获取('用户')
findAll(@Request()请求,@Query()查询:FindAllUsersDto){
//代码在这里。
}
这很有效。我想知道这是不是有点重复。因为我可以使用req.query来获取查询对象。但是如果我不将@Q
标签: Nestjs
nestjs-confignestjs-jwt
我在节点js中实现了Clinic.js。但我不知道如何在Nest js框架中实现clinic.js。我将探讨如何将clinic.js实现为Nest js。但是我没有得到任何答案,你能告诉我吗。我对他们的文档一无所知,但是通过快速浏览他们的文档,看起来你可以只做clinic doctor-nest start-watch,它应该在运行的服务器上启动。使用Thread build将TS文件传输到JS,然后使用clinic docker-node dist/main。它使用nodejs运行端点文件ma
我使用TypeForm查询一个简单的“Like”实体,其定义如下:
@Entity()
export class Like extends BaseEntity {
@ManyToOne(type => Post, post => post.likeList)
post: Post;
@ManyToOne(type => Contest, contest => contest.likeList)
contest: Contest; //
我想使用@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
数据库系统/驱动程序:
[x]postgres
`
打字
复制步骤或显示问题的小型存储库:
1.创建一个实体:AuditLog
@Entity('audit_log')
export class AuditLog extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
ip: string;
@Column({ type: 'varchar' })
url: st
我写了一个非常基本的控制器,比如
@Controller('tasks'))
导出类TasksController{
构造函数(私有任务服务:任务服务){}
@获取(':id')
getById(@Param('id')id:string):TaskDto{
log('Get Called>>>',id);
const task=this.tasksService.getById(id);
const dto=TaskMapper.toDto(任务);
返回dto;
}
@删除(“:id”)
删
我下载了19 auth示例并向其中添加了一些console.log调试代码,然后发现了一些问题
JwtAuthGuard中的代码从未执行:“2222222”未在以下代码中打印到控制台:
canActivate(context: ExecutionContext) {
console.log('22222222222');
// add your custom authentication logic here
// for example, call super.logIn(request) t
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 14 页