标签: nestjs

在nestJs中可以一起使用控制器和graphql解析器吗?

对于我的下一个项目,我想在前端使用 Graphql。此外,这个项目还应该提供一个 Rest-Api。现在我发现了这个非常伟大的框架“nestjs”,理论上可以将 Graphql 端点和 Rest 端点结合起来。不幸的是,如果这会导致问题,我在文档中找不到任何内容。下面的代码可以正常使用吗?

阿蒂克尔控制器:

@Controller('article')
@Resolver('Article')
export class ArticleController {
    constructor(private articleService: ArticleService){}

    @Get()
    @Query(returns => CArticle)
    async Article() {
     const dbElement=await this.articleService.getById("xy");
     return dbElement;
    }
}
Run Code Online (Sandbox Code Playgroud)

文章模块:

@Module({
    controllers:[ArticleController],
    providers:[ArticleService,ArticleController]
})
export class ArticleModule {}
Run Code Online (Sandbox Code Playgroud)

nestjs

9
推荐指数
1
解决办法
3856
查看次数

禁用 NestJS 中所有 POST 的状态 201

我的客户期望所有成功的状态代码都等于 200。但是 NestJS 默认对所有 POST 方法使用 201。如何在应用程序范围内禁用 POST 201?不是针对一种方法,而是针对整个应用程序。

javascript node.js nestjs

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

如何在ServeStaticModule中定义路径前缀?

我想根据此文档提供一些静态目录结构https://docs.nestjs.com/recipes/serve-static#serve-static但可以找到这些简单问题的答案:

  1. 如何设置像“/some/path/to/files”这样的路径前缀?
  2. 如何在运行时设置服务(文件路径是动态的并且不能硬编码)?

提前致谢。

PS 我看到了一些答案,app.useStaticAssets()但据我了解,这是 Express 特定的解决方案,无论如何都不会使用最新版本进行编译(Property 'useStaticAssets' does not exist on type 'INestApplication')...

更新

例如我有这些目录:

  1. /var/lib/应用程序/data1
  2. /var/lib/应用程序/data2
  3. /home/用户/一些/路径

我希望它被用作:

  1. http://localhost:3000/path1
  2. http://localhost:3000/path333
  3. http://localhost:3000/my/funny/cats

nestjs

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

Nest.js 无法解析依赖关系

ConfigService我正在尝试在我的中使用,users.module.ts但我得到了

错误:Nest 无法解析 UsersService(UserRepository、HttpService、?)的依赖项。请确保索引 [2] 处的参数 ConfigService 在 UsersModule 上下文中可用。

潜在的解决方案:

  • 如果 ConfigService 是提供者,它是当前 UsersModule 的一部分吗?
  • 如果 ConfigService 是从单独的 @Module 导出的,那么该模块是否会在 UsersModule 中导入?

我已将 ConfigModule 导入到我的 UsersModule 中,但仍然无法正常工作:(

应用程序模块.ts

@Module({
  imports: [
    ConfigModule.forRoot({
      expandVariables: true,
    }),
    TypeOrmModule.forRoot(),
    UsersModule,
    AuthModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})

export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

用户.module.ts

import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [ConfigModule, HttpModule, TypeOrmModule.forFeature([User])],
  controllers: [UsersController],
  providers: [UsersService],
  exports: [UsersService],
})

export class UsersModule {}
Run Code Online (Sandbox Code Playgroud)

用户.service.ts

export class UsersService { …
Run Code Online (Sandbox Code Playgroud)

typescript nestjs nestjs-config

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

NestJS - 无法解析 ConfigService

我正在使用 NestJS jwt 护照来验证用户。我遵循文档,这是我的应用程序模块:

import { Module } from '@nestjs/common';
import { UserModule } from './user/user.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './auth/auth.module';
import { ConfigModule } from '@nestjs/config';
import configuration from '../config/configuration';

@Module({
  imports: [
      ConfigModule.forRoot({
          load: [configuration],
      }),
      TypeOrmModule.forRoot(),
      UserModule,
      AuthModule,
  ],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

这是我的身份验证模块:

import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { PassportModule } from '@nestjs/passport';
import { UserModule } from '../user/user.module';
import …
Run Code Online (Sandbox Code Playgroud)

nestjs

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

NestJS 复制资产文件

我正在开发一个读取哈巴狗模板的电子邮件模块。

我无法让构建包含 *.pug 模板文件:

我已按照以下说明进行操作: https://github.com/nestjs/nest-cli/issues/320

在nest-cli.json中添加资产属性

"email": {
  "type": "library",
  "root": "libs/email",
  "entryFile": "index",
  "sourceRoot": "libs/email/src",
  "compilerOptions": {
    "tsConfigPath": "libs/email/tsconfig.lib.json"
  },
  "assets": ["**/*.pug"]
},
Run Code Online (Sandbox Code Playgroud)

nestjs

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

未找到 Nestjs 测试模块

我使用 Mongdoose 和 Nestjs 创建了一个简单的 REST API。我总共进行了 2 次测试,但都失败了。\n测试输出:

\n\n
\n

FAIL src/app/auth/auth.service.spec.ts\n \xe2\x97\x8f 测试套件运行失败

\n
\n\n
Cannot find module \'@shared/errors\' from \'auth.service.ts\'\n\n   5 | \n   6 | import { AppLogger } from \'../logger/logger\';\n>  7 | import { Errors } from \'@shared/errors\';\n     | ^\n   8 | import { ILoginDto } from \'./dto/login.dto\';\n   9 | import { ITokenDto } from \'./dto/auth.dto\';\n  10 | import { IUser } from \'@user/document/user.doc\';\n\n  at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)\n  at Object.<anonymous> (auth/auth.service.ts:7:1)\n
Run Code Online (Sandbox Code Playgroud)\n\n

FAIL src/app/user/user.service.spec.ts\n \xe2\x97\x8f 测试套件运行失败

\n\n …

jestjs nestjs

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

在 Guard 中访问请求的原始正文?

有没有办法访问请求的原始正文?不是已经解析成json了吗?

@Injectable()
export class WooGuard implements CanActivate {
  secret: string;

  constructor(
    private readonly reflector: Reflector,
    private configService: ConfigService,
    ) {
      this.secret = this.configService.get<string>("woocommerce.webhook.secret");
    }

  async canActivate(
    context: ExecutionContext,
    ): Promise<boolean> {

    const request = context.switchToHttp().getRequest<Request>();
    request.body // this is parsed json

    // I am calculating the sha256 hash of the body with a secret for a webhook.
    // due to how the raw json is vs. the JSON.stringify(request.body), the signature is never the same.
  }
}
Run Code Online (Sandbox Code Playgroud)

nestjs

9
推荐指数
2
解决办法
5649
查看次数

在Nestjs中将文件保存在文件系统中

我想将URL客户端发送的图像存储multipart/form-data在我的MySQL数据库中。我遵循了文档,但我无法真正找出应该如何将图像保存在服务器文件系统中并将 URL 返回给客户端。

这是我的代码:

@ApiTags('product-image')
@Controller('product-image')
export class ProductImageController {
  constructor(public service: ProductImageService) {
  }

  @Post('upload')
  @UseInterceptors(FilesInterceptor('files'))
  uploadImage(@UploadedFiles() files) {
    console.log(files);
    // How can I save image files in
    // a custom path and return the path
    // back to the client?

  }
}
Run Code Online (Sandbox Code Playgroud)

javascript mysql node.js nestjs

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

NestJS 使用保留在依赖注入层中的自定义参数创建一个新实例

我试图在不破坏 DI 层的情况下创建一个新实例,从而允许我的实例访问其构造函数中使用的所有可注入服务

我目前拥有的示例不允许我使用任何可注入服务:

const camera: Camera = new Camera(id, options);
Run Code Online (Sandbox Code Playgroud)

使用这种方法,相机类无法导入任何可注入的单例或类。

我在这里读到您可以使用它moduleRef来创建新实例,因此我尝试了以下操作:

const camera: Camera = await this.moduleRef.create(Camera);
Run Code Online (Sandbox Code Playgroud)

但现在的问题是,我无法传递IDOptions参数,唯一的解决方案是在初始化后立即使用设置器。

问题:

如何创建一个类的新实例(不是单例),由 Nest 的注入器创建并在最新版本的 NestJS 中创建时传递自定义参数?

node.js typescript nestjs

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

标签 统计

nestjs ×10

node.js ×3

javascript ×2

typescript ×2

jestjs ×1

mysql ×1

nestjs-config ×1