API 参考

以下部分作为 OGM 和 Model 类中所有功能的参考指南。

OGM

函数 描述 示例

constructor

返回一个 OGM 实例。将 input 对象作为参数传入,然后传递给 Neo4jGraphQL 构造函数。

const ogm = new OGM({
    typeDefs,
});

init

异步方法用于初始化 OGM。在内部,调用 Neo4jGraphQL.getSchema() 生成 GraphQL 模式,并存储结果。初始化在此执行之前创建的任何模型,如果其中任何模型无效,则会抛出错误。

await ogm.init();

model

返回一个与传入名称匹配的 model 实例,或者(如果 OGM 已经初始化)如果找不到,则抛出 Error。接受一个类型为 string 的参数 name

类型定义
type User {
    username: String!
}
查询返回
const User = ogm.model("User");
错误的查询
const User = ogm.model("NotFound");

generate

要么写入指定的 outFile,要么返回一个字符串 - 如果设置了 noWrite

写入 outFile
import { OGM, generate } from "@neo4j/graphql-ogm";

const typeDefs = `
    type Movie {
        id: ID
        name: String
    }
`;

const driver = neo4j.driver(
    "bolt://localhost:7687",
    neo4j.auth.basic("username", "password")
);

const ogm = new OGM({ typeDefs, driver });

await generate({
    ogm,
    outFile: "path/to/my/file.ts",
});

console.log("Types Generated");
使用 noWrite 写入
import { OGM, generate } from "@neo4j/graphql-ogm";

const typeDefs = `
    type Movie {
        id: ID
        name: String
    }
`;

const driver = neo4j.driver(
    "bolt://localhost:7687",
    neo4j.auth.basic("username", "password")
);

const ogm = new OGM({ typeDefs, driver });

const source = await generate({
    ogm,
    noWrite: true,
});

console.log("Types Generated ", source);

assertIndexesAndConstraints

异步方法用于断言数据库约束的存在,在成功的情况下解析为 void,或者如果执行后必要的约束不存在,则抛出错误。它将 input 对象作为参数传入,支持的字段如下例所示。

假设类型定义保存到变量 typeDefs 中,并且有效的驱动程序实例保存到变量 driver

type Book {
    isbn: String! @unique
}

以及 OGM 的构造和初始化,使用

const ogm = new OGM({
    typeDefs,
});
await ogm.init();

以下内容检查标签 "Book" 和属性 "isbn" 是否存在唯一的节点属性约束,如果不存在则抛出错误

await ogm.assertIndexesAndConstraints();

下一个示例在约束不存在的情况下创建约束

await ogm.assertIndexesAndConstraints({ options: { create: true } });

输入

接受参数

名称 类型 描述

options

AssertConstraintsOptions

执行 assertIndexesAndConstraints 的选项。

AssertConstraintsOptions

名称 类型 描述

创建

布尔值

是否在约束不存在的情况下创建约束。默认情况下禁用。

模型

aggregate

此方法可用于聚合节点,并映射到底层模式 聚合.

参数

名称 类型 描述

where

GraphQLWhereArg

GraphQL where 输入类型的 JavaScript 对象表示形式,用于 过滤.

示例

以下是如何编写查询以查找最长的用户姓名

const User = ogm.model("User");

const usersAggregate = await User.aggregate({
    aggregate: {
        name: {
            longest: true
        }
    }
});

以及如何查找名称以字母 "D" 开头的最长的用户姓名

const User = ogm.model("User");

const usersAggregate = await User.aggregate({
    where: {
        name_STARTS_WITH: "D"
    },
    aggregate: {
        name: {
            longest: true
        }
    }
});

create

此方法可用于更新节点,并映射到底层 create 变异。它返回一个 Promise,该 Promise 解析为等效于此操作的变异响应。

参数

名称 类型 描述

input

任何

GraphQL input 输入类型的 JavaScript 对象表示形式,用于 创建 变异。

selectionSet

stringDocumentNodeSelectionSetNode

变异的选择集,有关更多信息,请参见 选择集.

args

任何

GraphQL 变异的 args 值。

context

任何

GraphQL 变异的 context 值。

rootValue

任何

GraphQL 变异的 rootValue 值。

示例

以下是如何创建标题为 "The Matrix" 的电影的示例

const Movie = ogm.model("Movie");

await Movie.create({ input: [{ title: "The Matrix" }] })

delete

此方法可用于删除节点,并映射到底层 删除 变异。它返回一个 Promise,该 Promise 解析为一个 DeleteInfo 对象

名称 类型 描述

nodesDeleted

数字

删除的节点数。

relationshipsDeleted

数字

删除的关系数。

参数

名称 类型 描述

where

GraphQLWhereArg

GraphQL where 输入类型的 JavaScript 对象表示形式,用于 过滤.

删除

stringDocumentNodeSelectionSetNode

GraphQL delete 输入类型的 JavaScript 对象表示形式,用于 delete 变异。

context

任何

GraphQL 变异的 context 值。

rootValue

任何

GraphQL 变异的 rootValue 值。

示例

以下是如何删除所有名称为 "Dan" 的用户节点的示例

const User = ogm.model("User");

await User.delete({ where: { name: "Dan" }});

find

此方法可用于查找节点,并映射到底层模式 查询。它返回一个 Promise,该 Promise 解析为与模型类型匹配的对象数组。

参数

名称 类型 描述

where

GraphQLWhereArg

GraphQL where 输入类型的 JavaScript 对象表示形式,用于 过滤.

options

GraphQLOptionsArg

GraphQL options 输入类型的 JavaScript 对象表示形式,用于 排序分页.

selectionSet

stringDocumentNodeSelectionSetNode

变异的选择集,有关更多信息,请参见 选择集.

args

任何

GraphQL 变异的 args 值。

context

任何

GraphQL 变异的 context 值。

rootValue

任何

GraphQL 变异的 rootValue 值。

示例

以下是如何查找数据库中的所有用户节点的示例

const User = ogm.model("User");

const users = await User.find();

如果您要查找名称为 "Jane Smith" 的用户,以下是如何操作的

const User = ogm.model("User");

const users = await User.find({ where: { name: "Jane Smith" }});

update

此方法可用于更新节点,并映射到底层 update 变异。它返回一个 Promise,该 Promise 解析为等效于此操作的变异响应。

参数

名称 类型 描述

where

GraphQLWhereArg

GraphQL where 输入类型的 JavaScript 对象表示形式,用于 过滤.

更新

任何

GraphQL update 输入类型的 JavaScript 对象表示形式,用于 update 变异。

connect

任何

GraphQL connect 输入类型的 JavaScript 对象表示形式,用于 update 变异。

disconnect

任何

GraphQL disconnect 输入类型的 JavaScript 对象表示形式,用于 update 变异。

创建

任何

GraphQL create 输入类型的 JavaScript 对象表示形式,用于 update 变异。

options

GraphQLOptionsArg

GraphQL options 输入类型的 JavaScript 对象表示形式,用于 排序分页.

selectionSet

stringDocumentNodeSelectionSetNode

变异的选择集,有关更多信息,请参见 选择集.

args

任何

GraphQL 变异的 args 值。

context

任何

GraphQL 变异的 context 值。

rootValue

任何

GraphQL 变异的 rootValue 值。

示例

以下是如何将名称为 "John" 的用户更新为 "Jane" 的示例

const User = ogm.model("User");

const { users } = await User.update({
    where: { name: "John" },
    update: { name: "Jane" },
});