使用 neo4j javascript 驱动程序在标签中使用特殊字符

问题描述 投票:0回答:1

我正在尝试创建一个带有以数字字符开头的标签的节点。我正在关注文档和其他堆栈溢出答案,但我始终无法让它发挥作用。

https://neo4j.com/docs/cypher-manual/current/syntax/naming/#symbolic-names-escaping-rules

我尝试了多种不同的解决方案,从用 \` 内联反引号和用反引号包装查询的不同部分。

const escapedName = escapeLabel(uniqueIdentifier);
const queryInsert = `
MERGE (w:example::${escapedName}) 
RETURN w
  `;

function escapeLabel(label: string): string {
  if (/^[0-9]/.test(label)) {
    return "`" + label + "`";
  }
  return label;
}

当我控制台记录查询插入时,我看到反引号

{
  queryInsert: "\n  MERGE (w:example::`9tV3G7nWMnduftSTQtzB4xpHK4iz1`) \n  RETURN w\n  ",
}

但是错误消息说

Neo4jError: Invalid input '::': expected ")", "WHERE", "{" or a parameter (line 2, column 17 (offset: 19))
"  MERGE (w:example::`9tV3G7nWMnduftSTQtzB4xpHK4iz1`)"

如果我将输入更改为不以数字字符开头的标签,则一切正常。 ^

neo4j cypher
1个回答
0
投票

就像错误所说,

::
无效。这是有效的:

MERGE (w:example:`9tV3G7nWMnduftSTQtzB4xpHK4iz1`)
RETURN w
© www.soinside.com 2019 - 2024. All rights reserved.