首页 > 解决方案 > 如何使用 node.js 更新节点节点?

问题描述

我无法使用 neo4j 更新数据库中的节点。更新过程不会发生。如果问题不是代码的问题,我无法弄清楚代码的编写。

app.post('/Movie/update',function(req, res){
    var title = req.body.title;
    var title = req.body.title2;
    session
        .run('MATCH (n:Movie {title:{titleParam}}) SET n.title={titleParam} RETURN n',{titleParam:title, title2Param:title})
        .then(function(result){
            res.redirect('/');
            session.close();
        })
        .catch(function(err){
            console.log(err);
        });
    res.redirect('/');
});

HTML 代码:

<form method="POST" action="/movie/update">
    <br>
    <input type="text" name="title">
    <input type="text" name="title2">

    <br>
    <input type="submit" value="Submit">
</form>

标签: node.jsneo4jcypher

解决方案


除了@jfriesenhahn 的回答之外,您的 Javascript 代码还为同一个title变量分配了 2 个不同的值。您应该使用 2 个不同的变量:

var title = req.body.title;
var title2 = req.body.title2;
session
    .run('MATCH (n:Movie {title: $title}}) SET n.title= $title2 RETURN n',
         {title: title, title2: title2})

或者,更简单地说:

session
    .run('MATCH (n:Movie {title: $title}}) SET n.title= $title2 RETURN n',
         {title: req.body.title, title2: req.body.title2})

此答案还使用现在首选$foo的参数语法(而不是不推荐使用的{foo}语法)。


推荐阅读