Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
09-08-2018 12:53 PM
You can find the schema at https://github.com/thepiperpied/palm-tree/blob/master/graphql-schema.js
You can find the main index.js at https://github.com/thepiperpied/palm-tree/blob/master/app.js
Create a relationship between to Departments
In cipher it's like : MATCH (a:Department{id: id}, b:Department{id: id}) CREATE a-[:CHILD]->b RETURN a, b
The auto generated mutation through /* augmentSchema will add autogenerated mutations based on types in schema */ const augmentedSchema = augmentSchema(schema);
doesn't create what I need.
It's only providing me with a mutation i.e. AddDepartmentChildren( departmentid: ID! 😞 Department
09-08-2018 02:02 PM
Hi Shrey -
This seems to be a bug in neo4j-graphql-js when generating mutations for relationships connecting nodes with the same label. I've created an issue to track it here: https://github.com/neo4j-graphql/neo4j-graphql-js/issues/102
In the mean time, you can add the mutation to accomplish creating the relationship by adding this to your GraphQL schema:
type Mutation {
AddDepartmentChildren(fromDepartmentID: ID!, toDepartmentID: ID!): Department @cypher(
statement:"""
MATCH (from:Department {id: $fromDepartmentID})
MATCH (to:Department {id: $toDepartmentID})
CREATE (from)-[:CHILD_DEPT]->(to)
""")
}
Also, you have an error in your schema for the children
field on the Department type, it should be:
children: [Department] @relation(name: "CHILD_DEPT", direction: "OUT")
instead of using the @cypher
directive there, use @relation
to express the relationship
09-08-2018 10:04 PM
Where should I put the parameters that I want in return if the relationship is successfully created and where should I define the properties for the relation CHILD_DEPT?
09-09-2018 08:06 AM
Oh right, that mutation should return a Department node and I forgot the return clause. Our convention for the generated mutations has been to return the from node. So the query should be
MATCH (from:Department {id: $fromDepartmentID})
MATCH (to:Department {id: $toDepartmentID})
CREATE (from)-[:CHILD_DEPT]->(to)
RETURN from
To add properties to the relationship just include them as parameters of the mutation and update the @cypher
query accordingly. Here's an example:
type Mutation {
AddDepartmentChildren(fromDepartmentID: ID!, toDepartmentID: ID!, count: Int): Department @cypher(
statement:"""
MATCH (from:Department {id: $fromDepartmentID})
MATCH (to:Department {id: $toDepartmentID})
CREATE (from)-[r:CHILD_DEPT]->(to)
SET r.count = $count
RETURN from
""")
Note that the neo4j-graphql-js library (and the neo4j-graphql database plugin) do not currently support an automatic way of working with relationship properties so you'll have to define @cypher
directives on fields to work with relationship properties.
09-08-2018 09:51 PM
Got it, Thanks man.
My love for Neo4J is increasing day by day.
09-09-2018 08:34 AM
Okay seems good to me. Thank you so much.
All the sessions of the conference are now available online