2017-10-28 32 views
0

我希望在发出某些请求时始终返回字段,以便客户端可以执行其他操作。如何总是返回Graphql字段?

例如,如果用户注册成功我想显示Flash消息。但它必须由后端处理,而不是前端。

我可以“要求”客户总是要求特定的字段,它可以容纳所需的信息,但它可能很容易被忽略,所以我想在需要时返回数据。

这可能吗?

+0

提供的信息不足。你是否使用ajax(你的注册表单通过ajax提交)?或者你是在谈论一个分离的前端?你有没有graphql的工作?你是否使用graphql模块?什么版本的Drupal?如果你需要帮助,你必须让人们很容易帮助你。 – 2pha

回答

2

在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。这会导致您的查询在该特定字段丢失的任何时候失败。