【问题标题】:Variable of required type was not provided未提供所需类型的变量
【发布时间】:2019-03-22 21:14:15
【问题描述】:

我正在尝试在我的 Neo4j 数据库中创建一个带有 GraphQL 突变的关系。除了这个引起问题的突变之外,我还有许多其他突变已经起作用。它看起来像这样:

mutation(
    $id: String!,
    $recipe: String!,
    $date: String!
) {
    CreateUserRecipeRelation(id:$id, recipe:$recipe, date:$date) {
            id
        recipe {
        name
      }
  }    
}

我正在传递以下一组参数:

{"id": "google-oauth2|yyyyremovedauthstuffyyyy", "recipe": "baked spaghetti", "date": "10/10/2018"}

但 GraphQL 操场抛出以下错误:

“未提供所需类型 \"String!\" 的变量 \"$id\"。”

在我的 schema.graphql 文件中,我定义了以下内容:

  CreateUserRecipeRelation (
    id: String
    recipe: String
    date: String
  ): User @cypher(statement:
    "MATCH (r:Recipe{name:$recipe}), (u:User{id:$id}) CREATE (r)-[c:Created_By{date:$date}]->(u) RETURN r,c,u")

如果我直接在 Neo4j 中运行该密码查询,它就可以正常工作。在同一个项目中,我有 5 或 6 个其他创建关系的突变目前正在工作,但这个让我停下来。

更新:

这是我目前正在工作的突变,因此您可以看到结构上的相似性:

  CreateIngredientRelation (
    name: String
    recipe: String
    quantity: String
  ): Ingredient @cypher(statement:
    "MATCH (r:Recipe{name:$recipe}), (i:Ingredient{name:$name}) CREATE (r)-[c:Contains{quantity:$quantity}]->(i) RETURN r,c,i")

这个效果很好,并与附加到它们的数量建立了大量的关系。这就是我感到困惑的原因。如果它们都不起作用,那么尝试提出我认为的解决方案会更容易。

【问题讨论】:

  • 没有跟进你是如何解决这个问题的,如果你这样做了?
  • 你知道,我不记得我是否解决了它。我想我做到了。今晚让我检查一下我的存储库,看看我做了哪些修复,我会告诉你的。

标签: neo4j graphql apollo


【解决方案1】:

@BehemothDan,你怎么称呼这个突变?你在用react-apollo吗?如果是,让我为您提供一个示例,说明您应该如何处理此问题。 例如,如果您有一个表单来创建此UserRecipeRelation。你有来自react-apolloMutation 组件。在这个Mutation 上,你有renderProps CreateUserRecipeRelation,你可以将它传递给onSubmit 上的函数。在这个函数中,你传递你的变量:

UserRecipeRelation({ variables: { id: 'your id', recipe: 'bla bla', date: '12/12/18' } });

希望对您有所帮助! :)

【讨论】:

  • 我确实在使用 Apollo。我将按照您的建议重新格式化我的变量,看看是否可行。我确实记得在某些阅读过程中看到过这种格式的示例。奇怪的是,我有另一个突变,我以几乎完全相同的格式调用(三个变量,一个是关系上的属性)。感谢您的建议!
  • 是的,检查并稍后返回这里:)
  • 不幸的是,这并没有解决我的问题。我试图移出我的反应组件,并让它在 GraphQL Playground 中工作,但它仍然抛出相同的错误。我将使用我的一个可以正常工作且共享格式的突变来编辑我的帖子。
  • @BehemothDan,您可以尝试一下:您的id 应该是我认为的ID! 类型而不是String。试试这个,也许你的这个 id 没有被传递或作为字符串处理。
  • 愿意试一试。我绝对喜欢不让它像所有其他数据类型一样成为字符串的想法。感谢您的建议。
猜你喜欢
  • 2019-05-01
  • 2021-07-18
  • 2020-04-06
  • 2020-10-18
  • 2021-03-13
  • 2019-11-13
  • 2020-09-15
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多