构建配置

当查询准备好后,build 方法将生成运行查询所需的 Cypher® 和参数。

const { cypher, params } = query.build();

方法 build 接受一个包含选项的对象,用于配置构建过程

设置 类型 默认 描述

cypherVersion

字符串

undefined

如果设置,将在所有查询前加上 CYPHER [Version] 语句。可能的取值有 "5""25"

前缀

字符串

undefined

如果设置,将为所有变量名添加前缀。参见 自定义 Cypher

extraParams

Object

{}

将提供的参数添加到最终的 params 对象中。参见 参数

unsafeEscapeOptions

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 中的构建选项会改变此行为

设置 类型 默认 描述

disableNodeLabelEscaping

布尔值

false

如果设为 true,标签将不再被转义

disableRelationshipTypeEscaping

布尔值

false

如果设为 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]->()
© . This site is unofficial and not affiliated with Neo4j, Inc.