构建配置
当查询准备好后,build 方法将生成运行查询所需的 Cypher® 和参数。
const { cypher, params } = query.build();
方法 build 接受一个包含选项的对象,用于配置构建过程
| 设置 | 类型 | 默认 | 描述 |
|---|---|---|---|
|
字符串 |
|
如果设置,将在所有查询前加上 |
|
字符串 |
|
如果设置,将为所有变量名添加前缀。参见 自定义 Cypher |
|
Object |
|
将提供的参数添加到最终的 params 对象中。参见 参数 |
|
Object |
|
一组用于禁用生成的 Cypher 转义的选项。参见 不安全的转义选项 |
不安全的转义选项
|
这些选项很危险,修改它们可能导致代码注入。 |
默认情况下,Cypher Builder 会在需要时对文字值、标签和关系类型进行转义。
const movieNode = new Cypher.Node();
const matchQuery = new Cypher.Match(
new Cypher.Pattern(movieNode, {
labels: ["A Movie"]
})
);
const { cypher, params } = matchQuery.build();
MATCH (this0:`A Movie`)
位于 unsafeEscapeOptions 中的构建选项会改变此行为
| 设置 | 类型 | 默认 | 描述 |
|---|---|---|---|
|
布尔值 |
|
如果设为 true,标签将不再被转义 |
|
布尔值 |
|
如果设为 true,关系类型将不再被转义 |
示例:禁用节点标签和关系类型的转义
const movieNode = new Cypher.Node();
const matchQuery = new Cypher.Match(
new Cypher.Pattern(movieNode, {
labels: ["A Movie"]
}).related({type: "ACTED IN"}).to()
);
const { cypher, params } = matchQuery.build({
unsafeEscapeOptions: {
disableNodeLabelEscaping: true,
disableRelationshipTypeEscaping: true,
}
});
请注意,以下 Cypher 是无效的
MATCH (this0:A Movie)-[:ACTED IN]->()