nodejs neo4j не обращается к параметру req.params.x, но принимает любое жестко закодированное значение - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить доступ к сообщениям пользователя, хранящимся в neo4j, и я тестирую их, просто создав API-интерфейс с конечной точкой get, которая принимает один параметр (uuid).

это функция:

db.query('MATCH (user:user {uuid: $uuid})-[:posted]->(posts:post) RETURN posts ORDER BY posts.date', {uuid: req.params.uuid}, (err, result) => {
    if (err) {
        console.error(err)
        res.json(err)
    }
    console.log(req.params.uuid) //logs the correct entered param
    res.send(result)
})

возвращает пустой результат.Однако, если я жестко закодировал параметр uuid при условии, что он возвращает результат (зная, что пользователь uuid 123 уже опубликовал 3 сообщения), примерно так:

db.query('MATCH (user:user {uuid: $uuid})-[:posted]->(posts:post) RETURN posts ORDER BY posts.date', {uuid: 123}, (err, result) => {
    if (err) {
        console.error(err)
        res.json(err)
    }
    console.log(req.params.uuid)
    res.send(result)
})

3 сообщения возвращаются.почему не распознается req.params.id (по крайней мере, я так думаю)

ОБНОВЛЕНИЕ: Я использовал MATCH (user:user {uuid: '+ req.params.uuid + '}), и это сработало, но не сделает ли это уязвимым для инъекций?

1 Ответ

0 голосов
/ 03 февраля 2019

Отсюда я бы сказал, что uuid - это число, а req.params.uuid - это строка.

Когда вы жестко его кодируете или объединяете, он показывает, что число - это запрос.;когда вы передаете его в качестве параметра запроса, он принимает тип, который у него есть ... вероятно, String, если он исходит из формы HTML.

Попробуйте parseInt, для начала!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...