node.js - nodejs neo4j 不访问参数 req.params.x 但接受任何硬编码值

标签 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 + '}) 并且它有效,但这不会使其容易受到注入(inject)攻击吗?

最佳答案

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

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

首先尝试一下parseInt!

关于node.js - nodejs neo4j 不访问参数 req.params.x 但接受任何硬编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54499121/

相关文章:

neo4j - 使用德语元音变音对查询结果进行排序

java - 如何使用 boot 2.0 和 Neo4j SDN5 在 Spring 单元测试中配置我自己的 GraphDatabaseService 和 GraphAwareRuntime

node.js - Express Node js 对路由中的模式对象进行排序

javascript - Nodejs 快速用户注册,检查用户名或电子邮件是否已存在于 mongodb 数据库中

javascript - 如何在 HTTP 中使用 Google Chrome 远程调试协议(protocol)?

neo4j - 如何计算每个节点在 Cypher 中的关系数?

Neo4J 返回带有空格的列别名 (AS) 名称,这可能吗?

node.js - 是否可以将 MQTT 客户端连接到以 Node.JS 作为中间网关的 RabbitMQ?

python - 如何使用包含关系 ID 的 Neo4j APOC 导出到 .csv

neo4j - 如何使用 Cypher/Neo4J 获取所有节点或给定标签的所有属性键?