Neo4j插入具有各种关系的节点

我试图创build“配方”,“成分”和“用户”节点(作者)。

基本上,作者可以有很多的食谱; 和食谱有成分多对多的关系。

我有这个查询:

MATCH (user:User) WHERE ID(user) = {uid} CREATE (recipe:Recipe {name:"receta 4"}) WITH ingredient MATCH (ingredient:Ingredient) WHERE ID(ingredient) = node(7) CREATE (recipe)-[ri:HAS {unit: "vasos", cant: 1}]-(ingredient) WITH ingredient MATCH (ingredient:Ingredient) WHERE ID(ingredient) = node(6) CREATE (recipe)-[ri:HAS {unit: "cditas", cant: 2}]-(ingredient) CREATE (user)-[:PREPARE]->(recipe) RETURN recipe 

但是,我得到错误:

 ingredient not defined (line 4, column 7) "WITH (ingredient:Ingredient)" ^ Neo.ClientError.Statement.InvalidSyntax 

哪个是这个查询的正确forms?

我的js代码:

 Recipe.create = function (req, callback) { var data = req.body; var uid = parseInt(req.params.id); var query = [ 'MATCH (user:User)', 'WHERE ID(user) = {uid}', 'CREATE (recipe:Recipe {data})', ]; // set ingredients var ingId; var unit; var cant; for (var i = data.ingredients.length - 1; i >= 0; i--) { ing = data.ingredients[i]; ingId = parseInt(ing.id); unit = ing.unit; cant = ing.cant; query.push( 'MATCH (ingredient:Ingredient)', 'WHERE ID(ingredient) = node(' + ingId + ')', 'CREATE (recipe)-[ri:HAS {unit: "'+unit+'", cant: '+cant+'}]-(ingredient)' ); } query.push( 'CREATE (user)-[:PREPARE]->(recipe)', 'RETURN recipe' ); query.join("\n"); db.cypher({ query:query, params:{ data: data, uid: uid } }, function (err, results) { if (err) return callback(err); console.log(results) callback(null, results); }); }; 

我相信问题是WITH子句引用下一个要创build的节点,而不是引用上一个要创build的节点。 此外,代码正试图创build无向关系。

尝试这个:

 MATCH(用户:用户)
 WHERE ID(user)= {uid}
 CREATE(recipe:Recipe {name:“receta 4”})
配方
 MATCH(配料:配料)
 WHERE id(成分)= 7
 CREATE(recipe) -  [ri:HAS {unit:“vasos”,cant:1}]  - >(成分)
配方
 MATCH(配料:配料)
在哪里ID(成分)= 6
 CREATE(recipe) -  [ri:HAS {unit:“cditas”,cant:2}]  - >(成分)
 CREATE(user) -  [:PREPARE]  - >(recipe)
返回食谱