首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NestJ和ValidationPipe在GraphQL中上传

用NestJ和ValidationPipe在GraphQL中上传
EN

Stack Overflow用户
提问于 2020-06-13 14:21:04
回答 1查看 427关注 0票数 2

我试图使用以下策略:https://stephen-knutter.github.io/2020-02-07-nestjs-graphql-file-upload/在我的api中进行文件上传。

如果不使用ValidationPipe,但是当我启用ValidationPipe时,类转换器上会出现这样的错误:

代码语言:javascript
复制
TypeError: Promise resolver undefined is not a function
    at new Promise (<anonymous>)
    at TransformOperationExecutor.transform (/Users/victorassis/Workspace/barreiroclub/api/node_modules/class-transformer/TransformOperationExecutor.js:117:32)
    at _loop_1 (/Users/victorassis/Workspace/barreiroclub/api/node_modules/class-transformer/TransformOperationExecutor.js:235:45)
    at TransformOperationExecutor.transform (/Users/victorassis/Workspace/barreiroclub/api/node_modules/class-transformer/TransformOperationExecutor.js:260:17)
    at ClassTransformer.plainToClass (/Users/victorassis/Workspace/barreiroclub/api/node_modules/class-transformer/ClassTransformer.js:17:25)
    at Object.plainToClass (/Users/victorassis/Workspace/barreiroclub/api/node_modules/class-transformer/index.js:20:29)
    at ValidationPipe.transform (/Users/victorassis/Workspace/barreiroclub/api/node_modules/@nestjs/common/pipes/validation.pipe.js:40:39)
    at /Users/victorassis/Workspace/barreiroclub/api/node_modules/@nestjs/core/pipes/pipes-consumer.js:15:33
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

我搜索了很多,但是像类转换器这样的搜索被放弃了,答案是不要在上传的时候使用ValidationPipe。

有人认错了然后找到了解决办法?

EN

回答 1

Stack Overflow用户

发布于 2022-04-25 04:00:11

我试着遵循您上面发布的示例,然后启用类的转换,正如您所提到的,我没有遇到任何错误。但是,当我试图在解析器中放置错误类型的参数时,我遇到了这个错误。下面是我安装应用程序引导程序的地方:

代码语言:javascript
复制
async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  app.enableCors({
    origin: extractOrigins(app.get(ConfigService).get('CORS_ORIGINS')),
  });
  app.useGlobalPipes(
    new ValidationPipe({
      transform: true,
    }),
  );
  app.use(graphqlUploadExpress());
  await app.listen(app.get(ConfigService).get('PORT') ?? 3000);

  logScaffoldApp(app);
}
bootstrap();

解析程序代码:

代码语言:javascript
复制
@Mutation(() => Boolean, { nullable: true })
  async uploadVocabularies(
    @Args({
      name: 'file',
      type: () => GraphQLUpload,
    })
    { createReadStream, filename }: FileUpload,
  ) {
    console.log('attachment:', filename);

    const stream = createReadStream();
    stream.on('data', (chunk: Buffer) => {
      console.log(chunk);
    });
  }

当我尝试学习另一个教程时,我确实得到了一个错误,并且尝试将这个论点作为一个承诺,所以类转换器得到了同样的错误:

代码语言:javascript
复制
@Mutation(() => Boolean, { nullable: true })
  async uploadVocabularies(
    @Args({
      name: 'file',
      type: () => GraphQLUpload,
    })
    attachment: Promise<FileUpload>,
  ) {
    const { filename, createReadStream } = await attachment;
    console.log('attachment:', filename);

    const stream = createReadStream();
    stream.on('data', (chunk: Buffer) => {
      console.log(chunk);
    });
  }

我希望这能帮助你和其他看过这篇文章的人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62361052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档