Neo4j 自动生成的变异不会创建关系

Neo4j 自动生成的变异不会创建关系,neo4j,graphql,graphql-js,grandstack,Neo4j,Graphql,Graphql Js,Grandstack,我想测试通过从“neo4j graphql js”调用makeAugmentedSchema自动生成的CRUD突变。创建节点没有问题,但创建关系对我不起作用。请告诉我我做错了什么 模式: type Bio{ id: ID! description: String } type Person{ id: ID! name: String dob: Date gender: String bioRelation: [Bio] @relation

我想测试通过从“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")
}
突变: 我遵循界面突变指导创建突变

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
  }
}
这就是AddPerson生物反应的样子:


谢谢。

我是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,我们应该让它正常工作。

谢谢,@dryhurst。似乎无法引用新创建的节点的id,但我通过引入临时id属性找到了解决方案。请参见关于该事项的讨论和最终解决方案: