我正在开发一个应用程序,让用户能够构建自己的图形。我一直在为所有查询和创建使用参数。但当我想让用户能够创建一个节点时,他们也可以根据自己的需要给它添加标签(遵守neo4j对空字符串标签的限制)。如何参数化这种类型的事务?
我试过这个:
.CREATE("(a:{dynamicLabel})").WithParams(new {dynamicLabel = dlabel})...
但这会导致neo的语法错误。我很想连接,但担心这可能会给我的应用程序带来注入风险。
我很想建立我自己的类,读取预期的字符串并拒绝任何类型的neo语法,但这会限制我的用户,我宁愿不这样做。
我拼命寻找,终于找到了。你可以这样做:
// create or update nodes with dynamic label from import data
WITH "file:///query.json" AS url
call apoc.load.json(url) YIELD value as u
UNWIND u.cis as ci
CALL apoc.merge.node([ ci.label ], {Id:ci.Id}, {}, {}) YIELD node
RETURN node;
JSON如下所示:
{
"cis": [
{
"label": "Computer",
"Id": "1"
},
{
"label": "Service",
"Id": "2"
},
{
"label": "Person",
"Id": "3"
}
],
"relations": [
{
"end1Id": "1",
"Id": "4",
"end2Id": "2",
"label": "USES"
},
{
"end1Id": "3",
"Id": "5",
"end2Id": "1",
"label": "MANAGED_BY"
}
]
}
如果您使用的是Java客户机,那么您可以这样做。
Node node = GraphDatabaseService.createNode();
Label label = new Label() {
@Override
public String name() {
return dynamicLabelVal;
}
};
node.addLabel(label);
然后可以使用LabelCache,这将避免为每个节点创建标签对象。
有一个开放的neo4j问题4334,这是一个功能请求,用于在CREATE
期间添加参数化标签的能力。所以,这还不可能。
该问题包含一条注释,建议使用硬编码标签生成CREATE
语句,这将起作用。不幸的是,它的性能不如使用参数(在这种情况下应该支持它)。
我想使用Neo4jClient创建一些Person和Books类型的节点。 要做到这一点,我有这样的班级人员: 为了创建节点,我写了这样的东西: (客户- 当我在Neo4j web界面中看到创建的节点时,没有为创建的节点分配标签。我以为那个人就是标签。如何使用Neo4jClient为创建的节点分配标签。我想要像“Match(n:Person)”这样的查询,但是因为没有创建类型,所以不可能这样做。
我想创建一个java程序,它接受动态数量的参数。例如: 其中可能会有所不同。 我使用Commons CLI作为命令行选项解析器。但我找不到一种方法来实现一个接受动态参数数的选项。 setArgs指定选项必须接受的参数数。是否可以指定选项可以接受的最小参数数? 或者我应该使用其他工具来解析命令行选项?
问题内容: 我有一个特定的问题。我有一个包含无效值的表。我需要用大于的先前值替换无效值(此处)。 困难在于,使用Update或insert(游标和update可以做到)对我来说是不合适的。我唯一的方法是使用Select语句。 当我将-函数与when一起使用时,我只会得到一列具有正确值的列。 内容: 预期查询结果: 问题答案: 结果 :
我正在创建一个动态表单。ie基于下拉框中的用户选择。根据下拉选择,我可以有2到20个字段。因此,每次用户更改下拉列表时,我们都可以有各种类型的不同表单字段。 提交url参数。是否可以仅提交可见且与用户选择相关的表单字段当前url字符串正在提交所有值。 对于场景1 当用户从下拉列表中选择“A”时。我们显示firstname和lastname输入字段以及url?fname=fname 情景2 当用户从
问题内容: 我正在尝试从JavaScript创建iframe并用任意HTML填充它,如下所示: 我希望然后包含一个有效的窗口和文档。但是,事实并非如此: console.log(iframe.contentWindow); 空值 我在俯视什么? 问题答案: 设置javascript中新创建的时,除非将该元素插入文档中,否则不会触发HTML解析器。然后更新HTML,将调用HTML解析器并按预期处理属
问题内容: 如何使用JavaScript创建SVG元素?我尝试了这个: 但是,它将创建宽度为零,高度为零的SVG元素。 问题答案: 尝试这个 :