我希望在发出某些请求时始终返回一个字段,以便客户端可以执行其他操作。
例如,如果用户注册成功,我想显示flash消息。但它必须由后端而不是前端处理。
我可以“要求”客户端始终请求保存所需信息的特定字段,但可能很容易被忽略,因此我希望在需要时返回数据。
这可能吗?
答案 0 :(得分:1)
GraphQL规范中没有任何内容允许以与可能需要参数相同的意义要求特定字段。但是,这可以在解析器内部处理。例如,如果您有一个名为getFoos
的查询,并且您希望客户端在获取该查询时始终请求字段foo
,则getFoos
的解析程序可能如下所示:
function (obj, args, ctx, info) {
const fields = info.fieldNodes[0].selectionSet.selections.filter(s => s.name.value)
if (!fields.includes('foo')) return Promise.reject(new Error('Missing field foo!'))
// continue resolving the query as normal
}
每个解析器将第四个参数作为第四个参数,该对象包含有关请求的详细信息,包括请求的字段。因此,在解析器中,只需验证该字段是否包含在内,如果缺少该字段,则返回拒绝的Promise。这将导致您的查询在任何特定字段缺失时失败。