我正在尝试创建一个带有以数字字符开头的标签的节点。我正在关注文档和其他堆栈溢出答案,但我始终无法让它发挥作用。
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`)"
如果我将输入更改为不以数字字符开头的标签,则一切正常。 ^
就像错误所说,
::
无效。这是有效的:
MERGE (w:example:`9tV3G7nWMnduftSTQtzB4xpHK4iz1`)
RETURN w