使用返回列表的查询:
{
users(first: 10) {
messages(first: 10) {
foo
}
}
}
和消息解析器 -
const errors = [];
async function messagesResolver(user, {first}, ctx, info) {
const messages = await Promise.all(
user.messages.map(
messageId => fetch(messageId).catch(e => {
// Collect error
errors.push(err);
// Ignore this failed message id
return null;
})
)
);
// TODO:
// How do I add errors to the list of errors
// sent to the client
return messages.filter(m => m != null);
}
是否可以只返回获取成功的消息的部分列表?是否可以发送错误并让客户决定如何处理错误?
使用错误替换消息会在一定程度上执行此操作,但解析后的列表中包含null
值 -
messages = [ { 1 }, { 2 }, new Error(3), { 4 }, new Error(5) ]
解析为
data = [ { 1 }, { 2 }, null, { 4 }, null ]
errors = [ Error(3), Error(5) ]
但是,是否可以通过其他API(例如info.addError(new Error(3))
)发送错误以获得以下结果?
data = [ { 1 }, { 2 }, { 4 } ]
errors = [ Error(3), Error(5) ]