【问题标题】:Dynamic search input as variable for cypher动态搜索输入作为密码的变量
【发布时间】:2026-02-08 06:55:01
【问题描述】:

我正在尝试使用 structr 2.0.1 创建结果页面。

enter image description here

在这些页面中,我想显示用户输入的结果。输入到我的输入字段中的字符串应该通过密码查询传输到我的 Neo4j-DB。

Input = "admin" -> Cypher(Match (n) Where n.name = 'admin' Return n)

返回值将用于通过整数 id 实例化图形 obj(完全可以正常工作并且没有问题)。

不幸的是,经过数小时的调查,我无法使用内置功能进行操作。我也尝试了很多“查询和数据绑定”、“HTML 属性”页面和 Java 脚本,但我无法将值从我的 html 元素传输到我前端的密码查询函数。

[input field ("String")--> button fuction()--> cypher (Query) --> function input {graph.addNode(ID)}] 

structr 中必须有一个解决方案来解决这个问题,而无需直接调用 ajax。

也许你们中的某个人发现了同样的问题或对此有解决方案。

在这种情况下,我将非常感谢您的帮助。

谢谢!

迷宫

【问题讨论】:

    标签: javascript neo4j frontend structr


    【解决方案1】:

    您的请求参数的值在 StructrScript 中可用,有关详细信息,请参阅https://support.structr.com/article/119

    在脚本上下文中,有一个名为request 的对象,您可以直接访问它,其中包含您发送给Structr 的任何请求参数。因此,在您的情况下,您可以像这样访问输入字段的值(前提是您将名称设置为name):

    ${request.name}
    

    需要以下步骤才能完成这项工作:

    1. 创建<form method="POST" action="/${page.name}">
    2. 插入<input type="text" name="name" value="${request.name}">
    3. 插入<input type="submit" value="submit">

    当您提交表单时,请求参数“name”将在如上所述的 Structr 上下文中可用。

    要将该值插入到 Cypher 查询中,您必须围绕请求值构造查询,例如:

    ${cypher(concat('MATCH (n) WHERE n.name = "', request.name, '" RETURN n'))}
    

    但是要非常小心这样的设置,因为上面的代码很容易受到查询注入攻击(也就是 SQL 注入,或者在这种情况下更确切地说是 CQL 注入)。

    【讨论】: