我正在尝试添加一种变异,以允许客户端将文档添加到LineItem架构。当我使用GraphiQL测试它时,下面编写的代码允许我执行此操作,但是得到的响应为null。如何修复代码,使响应成为新文档?
addLineItem: {
type: LineItemType,
args: {
orderId: {type: new GraphQLNonNull(GraphQLID)},
productId: {type: new GraphQLNonNull(GraphQLID)},
quantity: {type: new GraphQLNonNull(GraphQLInt)}
},
resolve(parent, args) {
Product.findById(args.productId, (err, result) => {
let price = result.price;
let subtotal = price*args.quantity;
let lineitem = new LineItem({
orderId : args.orderId,
productId : args.productId,
quantity : args.quantity,
subtotal: subtotal
});
return lineitem.save();
}}
}
},
答案 0 :(得分:2)
问题是您没有在resolve
函数中返回任何值,lineitem.save();
返回了callBack
内部的值
使用make resolve函数async
,删除findById
回调并等待结果,然后实现您的逻辑并返回值,如下所示:
async resolve(parent, args) {
const result = await Product.findById(args.productId);
let price = result.price;
let subtotal = price*args.quantity;
let lineitem = new LineItem({
orderId : args.orderId,
productId : args.productId,
quantity : args.quantity,
subtotal: subtotal
});
return lineitem.save();
}
答案 1 :(得分:0)
实际上,您的代码没有错。 。
您需要将返回值指定为类型(e.g. Boolean, String, etc)
。类型可以为空,例如:值可以为null,实际上,默认情况下它们为空除非您使用!
所以返回空值没有错。