【问题标题】:Auto-generated Mutation Does Not Create Relationship自动生成的突变不会创建关系
【发布时间】:2020-10-31 03:39:14
【问题描述】:

我想测试通过从“neo4j-graphql-js”调用 makeAugmentedSchema 创建的自动生成的 CRUD 突变。创建节点没有问题,但创建关系对我不起作用。请告知我在这里做错了什么。

架构:

type Bio{
    id: ID!
    description: String
}

type Person{
    id: ID!
    name: String
    dob: Date
    gender: String
    bioRelation: [Bio] @relation(name: "HAS_BIO", direction: "OUT")
}

突变: 我正在遵循接口突变指导https://grandstack.io/docs/graphql-interface-union-types 来创建突变。

mutation {
    p: CreatePerson(
        name: "Anton",
        gender: "Male") {
    name
    gender
    id
  }
    b: CreateBio(
        description: "I am a developer") {
    description
        id
  }
  r: AddPersonBioRelation(
    from: {id: "p"},
    to:{id: "b"}
  ){
    from{
      name
    }
    to{
      description
    }
  }
}

它创建了 Person 和 Bio 节点,但两者之间没有任何关系:

{
  "data": {
    "p": {
      "name": "Anton",
      "gender": "Male",
      "id": "586b63fd-f9a5-4274-890f-26ba567c065c"
    },
    "b": {
      "description": "I am a developer",
      "id": "a46b4c22-d23b-4630-ac84-9d6248bdda89"
    },
    "r": null
  }
}

这是 AddPersonBioRelation 的样子:

谢谢。

【问题讨论】:

    标签: neo4j graphql graphql-js grandstack


    【解决方案1】:

    谢谢你,@dryhurst。似乎没有办法引用新创建的节点的 id,但我通过引入 temp id 属性找到了解决方案。请参阅关于此问题的讨论和最终解决方案:

    https://community.neo4j.com/t/auto-generated-mutation-does-not-create-relationship/21412/16.

    【讨论】:

      【解决方案2】:

      我是 GRANDstack 的新手,我自己也一直在努力解决这些类型的问题。我通常将其分解为单独的突变(在 javascript 中),并将每个突变的返回值用作下一个突变的值。例如:

      await createIncident({
        variables: {
          brief: values.brief,
          date,
          description: values.description,
          recordable: values.recordable,
          title: values.title
        }
      }).then((res) => {
        addIncidentUser({
          variables: {
            from: user.id,
            to: res.data.CreateIncident.id
          }
        });
      });
      

      我在您提供的示例中看到的问题是,您将 from 和 to 的字符串值分别指定为“p”和“b”,而不是 p.id 和 b.id 从父母突变。

      我可以指出这一点,但我一生无法弄清楚如何在突变本身中正确引用 p.id 和 b.id。换句话说,您正在尝试发送

      from: { id: "586b63fd-f9a5-4274-890f-26ba567c065c"}
      to: { id: "a46b4c22-d23b-4630-ac84-9d6248bdda89" } 
      

      但实际上你正在发送

      from: { id: "p"}
      to: { id: "b" } 
      

      这实际上不是 neo4j 中的引用,因此它失败了。

      如果我们能弄清楚如何正确引用 p.id 和 b.id,我们应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 2018-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        相关资源
        最近更新 更多