2
respostas

[Projeto] Correções de semântica no código

category.model.ts
./../meteora-backend/src/category/models/category.model.ts

Adicionei um construtor recebendo todos os atributos de Category, pois todos estão definidos como obrigatórios.

import { ObjectType, Field, ID } from '@nestjs/graphql';

@ObjectType()
export class Category {
  constructor(id: string, displayName: string, icon: string) {
    this.id = id;
    this.displayName = displayName;
    this.icon = icon;
  }

  @Field(() => ID)
  id: string;

  @Field()
  displayName: string;

  @Field()
  icon: string;
}

category.resolver.ts
./../meteora-backend/src/category/category.resolver.ts

Estou retornando de fato uma Promise na função "categories" da classe "CategoryResolver", ao invés de retornar apenas um array de categorias.


...

@Resolver(() => Category)
export class CategoryResolver {
  @Query(() => [Category])
  async categories(): Promise<Category[]> {
    return new Promise((resolve) => resolve(categories));
  }
}
2 respostas

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei da sua iniciativa de adicionar um construtor na classe Category, isso deixa a criação de objetos mais explícita e organizada. Também é interessante ver que você ajustou o retorno da Query para uma Promise<Category[]>, alinhando com o comportamento assíncrono esperado no resolver.

Uma dica interessante para o futuro é utilizar async/await diretamente, evitando criar uma Promise manualmente, o que deixa o código mais limpo:


async categories(): Promise<Category[]> {
  return categories;
}

Nesse código, a função retorna diretamente os dados, e o async já garante que o retorno será tratado como uma Promise automaticamente.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá Rafaela. Neste caso, no exemplo da aula 1, "categories" é um array simples de objetos, por isso criei uma Promise explicitamente, apenas uma questão de semântica mesmo, para evitar o erro abaixo na IDE.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade