如何使用NodeJS将整个对象注入Cypher查询

时间:2015-06-03 13:37:59

标签: node.js neo4j cypher

我有以下节点代码......

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');

1 个答案:

答案 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',....}

如果您的身体对象是地图,您可以直接传递它。