我试图访问存储在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 + '})
并且可以使用,但是这不容易注入吗?
答案 0 :(得分:1)
从这里开始,我想说uuid
是一个数字,而req.params.uuid
是一个字符串。
当您对其进行硬编码或连接时,它显示为数字,即查询;当您将其作为查询参数传递时,它将采用它具有的类型...如果它来自HTML表单,则可能是字符串。
为初学者尝试parseInt
!