¿Cuáles son las causas de UnhandledPromiseRejectionWarning en TypeGraphql?
Tengo un problema con mi código de typegraphql. No pude encontrar qué causa este mensaje de error.
El código que compartí a continuación es mi resolutor y mutación que debería devolver un ProductResponse:
@Mutation(returns => ProductResponse)
async addProduct (@Args() { model, title, description, price, images, productCode }: productData):
Promise<productresponse> {
try {
const productInstance = new ProductService()
const resp = await productInstance.add(model, title, description, price, images, productCode)
return { product: resp }
} catch (err: any) {
return { errorMessage: err.message }
}
}
A continuación se muestra la clase ProductResponse para estandarizar la respuesta de todas las mutaciones y consultas:
@ObjectType()
export class ProductResponse {
@Field(returns => String, { nullable: true })
errorMessage?: string
@Field(returns => Product, { nullable: true })
product?: Product
}
Y este es mi servicio que devuelve los datos guardados en la base de datos o lanza un error:
async add (model: string, title: string, description: string, price: number, images: string, productCode: string) {
const product = await Product.findOne({ where: { productCode } })
if (product) {
throw new Error("Producto duplicado")
}
const newProduct = await Product.create({ model, title, description, price, images, productCode }).save()
return newProduct
}
Pero cuando ejecuto este código, me encuentro con el siguiente mensaje de error. ¿Qué estoy haciendo mal?
UnhandledPromiseRejectionWarning: Error: No se puede determinar el tipo de salida de GraphQL para 'addProduct' de la clase 'ProductResolver'. ¿El valor que se utiliza como su tipo de TS o tipo explícito está decorado con un decorador adecuado o es un valor de salida adecuado?
davy.ai
Parece que el mensaje de error que estás encontrando está relacionado con la función
addProduct
que no tiene un tipo de retorno adecuado o un valor de salida.Debes asegurarte de que la clase
Product
esté correctamente definida y decorada como unObjectType
de GraphQL. Además, verifica que la claseProductData
también esté correctamente definida y decorada con los decoradores GraphQL adecuados para sus propiedades.Si esas clases están correctamente definidas, entonces debes comprobar que el tipo de retorno de la función
addProduct
coincida con el tipo definido en el decorador de resoluciónMutation
, que debería serProductResponse
.Además, podrías intentar especificar el valor de retorno de la función
add
en la claseProductService
para asegurarte de que regresa el tipo correcto.Una vez que hayas revisado estos elementos, el error debería resolverse.