我有以下节点代码......
router.post('/node/source', function(req, res, next){
var query = [
'MERGE (source:Source {name:{name}, loc:{location}})',
'RETURN source'
].join('\n');
db.cypher({
query: query,
params: req.body
}, function(err){
if(!err){
res.json(req.body);
}
else{
res.status(500).send(err);
}
});
});
只要我发送位置和名称,这就很有效,但如果我想发送不同的属性,该怎么办?也许我有时只想发送位置,所以我只想注入整个req.body对象。有没有比这更好的方式......
var query = [
'MERGE (source:Source'+JSON.stringify(req.body)+')',
'RETURN source'
].join('\n');
答案 0 :(得分:2)
不详细了解node.js表示法。 Cypher允许您根据地图修改属性,请参阅http://neo4j.com/docs/stable/query-set.html#set-adding-properties-from-maps。
MERGE (source:Source {name:{name}, loc:{location}})
SET n += {additionalProps}
RETURN source
您的参数是:
name: 'myname',
location: 'mylocation',
additionalProps: {prop1:'val1',....}
如果您的身体对象是地图,您可以直接传递它。