我正在尝试访问存储在 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 + '})
并且它有效,但这不会使其容易受到注入(inject)攻击吗?
最佳答案
从这里开始,我想说 uuid
应该是一个数字,而 req.params.uuid
是一个字符串。
当您对其进行硬编码或连接时,它显示为查询的数字;当您将它作为查询参数传递时,它将采用它所具有的类型...如果它来自 HTML 表单,则可能是一个字符串。
首先尝试一下parseInt
!
关于node.js - nodejs neo4j 不访问参数 req.params.x 但接受任何硬编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54499121/