nodejs neo4j不访问param req.params.x,但接受任何硬编码值

时间:2019-02-03 01:24:44

标签: node.js neo4j cypher

我试图访问存储在neo4j中的用户帖子,并通过简单地制作一个带有带有一个参数(uuid)的get端点的api对其进行测试。

这是函数:

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 :(得分:1)

从这里开始,我想说uuid是一个数字,而req.params.uuid是一个字符串。

当您对其进行硬编码或连接时,它显示为数字,即查询;当您将其作为查询参数传递时,它将采用它具有的类型...如果它来自HTML表单,则可能是字符串。

为初学者尝试parseInt