graphql - 为突变 GraphQL 提供显式类型
问题描述
我正在尝试创建一个接受产品列表的突变。但是这样做 GraphQL 会为createMultipleProducts方法抛出错误。不知道这里有什么错误。
import { Inject } from "@nestjs/common";
import { Args, Mutation, Query, Resolver } from "@nestjs/graphql";
import { ClientProxy } from "@nestjs/microservices";
import { ProductRequest } from "src/types/ms-product/product.request.type";
import { ProductResponse } from "src/types/ms-product/product.response.type";
@Resolver(of => ProductResponse)
export class ProductResolver {
constructor(
@Inject('SERVICE__PRODUCT') private readonly clientServiceProduct: ClientProxy
) {}
@Mutation(returns => ProductResponse)
async createProduct(@Args('data') product: ProductRequest): Promise<ProductResponse> {
const PATTERN = {cmd: 'ms-product-create'};
const PAYLOAD = product;
return this.clientServiceProduct.send(PATTERN, PAYLOAD)
.toPromise()
.then((response: ProductResponse) => {
return response;
})
.catch((error) => {
return error;
})
}
@Mutation(returns => [ProductResponse])
async createMultipleProducts(@Args('data') products: [ProductRequest]): Promise<Array<ProductResponse>> {
try {
const PROMISES = products.map(async (product: ProductRequest) => {
const PATTERN = {cmd: 'ms-product-create'};
const PAYLOAD = product;
return await this.clientServiceProduct.send(PATTERN, PAYLOAD).toPromise();
});
return await Promise.all(PROMISES);
} catch (error) {
throw new Error(error);
}
}
@Query(returns => ProductResponse)
async readProduct(@Args('data') id: string) {
return {}
}
}
我收到此错误:
UnhandledPromiseRejectionWarning: Error: Undefined type error. Make sure you are providing an explicit type for the "createMultipleProducts" (parameter at index [0]) of the "ProductResolver" class.
解决方案
如果它是一个复杂的对象数组,则需要显式地通知 GraphQL 参数的类型。
@Mutation(returns => [ProductResponse])
async createMultipleProducts(@Args({ name: 'data', type: () => [ProductRequest] }) products: ProductRequest[]): Promise<Array<ProductResponse>> {
...
}
推荐阅读
- java - 如何使用 aws-sdk-java JmesParser 过滤 JSON
- python - 运行 python 文件时出错(无法导入 psycopg2)
- javascript - 使用 JS 或 jQuery 从 URL 获取参数
- python - 在python中将QUIT函数应用于迷你游戏
- python - 创建轨迹栏以滚动大图像和上下边界(Pyhton / OpenCV)
- android - 如何在 MPAndroidChart 饼图中的标记视图中显示值标签?
- actionscript-3 - Adobe Flash Builder:如何制作带有进度条的 SWF 用于加载自身?
- javascript - 使用未发送到正文的文件上传来反应js fetch api
- python - 正则表达式检查字符串是代表 5 位还是 6 位数字
- git - 如何在一个 sourceforge 项目中创建多个 git 存储库