• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

213
Views
nestjs with grpc microservices not return empty arrays

I call service via grpc in nest js and when it return empty array the property not returned in object

  @Get()
  @Public()
  async findAll(
    @Query()
    request: PaginationQuery,
  ) {
    try {
      const res$ = this.svc.getAll(request);
      const { error, ...rest } = await firstValueFrom(res$);
      if (error) {
        throw new BadRequestException(error);
      }
      return rest;
    } catch (e) {
      this.logger.error(e);
      return new InternalServerErrorException(e);
    }
  }

I logged the result before it returned to client service it was

 {
      "id": "457a508b-f19a-4c77-b8a2-bb4004b9277b",
      "name": "plan1",
      "key": "plan1",
      "price": 20,
      "yearlyDiscountRate": 0.2,
      "trialDays": 14,
      "isRecommended": true,
      "isLegacy": false,
      "features": []
    }

but when it return to client via grpc it was

 {
      "id": "457a508b-f19a-4c77-b8a2-bb4004b9277b",
      "name": "plan1",
      "key": "plan1",
      "price": 20,
      "yearlyDiscountRate": 0.2,
      "trialDays": 14,
      "isRecommended": true,
      "isLegacy": false
    }

the features key with empty array not found.

I tried some things like add loader with arrays:true

 const app = await NestFactory.createMicroservice<MicroserviceOptions>(
    SubscriptionsModule,
    {
      transport: Transport.GRPC,
      options: {
        url: '0.0.0.0:50052',
        package: protobufPackage,
        protoPath: join(process.cwd(), 'libs/proto/src/subscriptions.proto'),
        loader: {
          arrays: true,
        },
      },
    },
  );

but it still not return property with empty array

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

I found the answer it was from line

if (error) {
        throw new BadRequestException(error);
      }

when arrays: true the if condition be true and throw an error. solved with

if (error?.length) {
        throw new BadRequestException(error);
      }
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error