如何始终返回Graphql字段?

如何始终返回Graphql字段?,graphql,Graphql,我希望在发出某些请求时始终返回一个字段,以便客户端可以执行其他操作 例如,如果用户注册成功,我想显示flash消息。但是它必须由后端处理,而不是前端 我可以要求客户总是请求特定的字段来保存所需的信息,但这很容易被忽略,所以我希望在需要时返回数据 这是可能的吗?GraphQL规范中没有任何内容允许在与参数相同的意义上要求特定字段。但是,这可以在解析器内部处理。例如,如果您有一个名为getFoos的查询,并且希望客户端在获取该查询时始终请求字段foo,那么getFoos的解析器可能如下所示: fun

我希望在发出某些请求时始终返回一个字段,以便客户端可以执行其他操作

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

我可以要求客户总是请求特定的字段来保存所需的信息,但这很容易被忽略,所以我希望在需要时返回数据


这是可能的吗?

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
}

每个解析器都将包含有关请求的详细信息(包括请求的字段)的info对象作为其第四个参数。因此,在解析器中,只需验证该字段是否包含在内,如果缺少该字段,则返回一个被拒绝的承诺。这将导致您的查询在该特定字段丢失时失败。

没有提供足够的信息。您是否使用ajax?您的注册表是否通过ajax提交?或者你说的是一个解耦的前端?你的graphql工作了吗?您是否正在为graphql使用模块?什么版本的Drupal?如果你需要帮助,你必须让人们更容易帮助你。请不要通过破坏你的帖子为人们做更多的工作。通过在Stack Exchange SE网络上发布,您已根据授予SE分发该内容的不可撤销权利,即无论您未来的选择如何。根据SE政策,该帖子的非故意破坏版本是发布的版本。因此,任何故意破坏行为都将恢复原状。