Как обновить узел узла с помощью node.js? - PullRequest
0 голосов
/ 15 мая 2019

Я не могу обновить узел в базе данных с помощью 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>

Ответы [ 2 ]

1 голос
/ 15 мая 2019

В дополнение к ответу @ jfriesenhahn ваш код Javascript также присваивает 2 разных значения одной и той же переменной title.Вы должны использовать 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} синтаксис).

0 голосов
/ 15 мая 2019

Итак, это может быть просто опечатка с вашей стороны, но вы используете titleParam дважды. Я думаю, что они ищут цифру:

MATCH (n:Movie {title:{titleParam}}) SET n.title={title2Param} RETURN n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...