本节为您介绍如何使用Connection
对象的方法管理数据库中的图集。
每个示例主要展示如何使用所列方法。点击完整示例查看完整代码示例。
showGraph()
从数据库获取全部图集。
参数:
RequestConfig
(可选):配置请求。
返回值:
GraphSet[]
: 数据库中全部图集列表。
// 获取全部图集并打印边数超过2000条的图集名称
let resp = await conn.showGraph();
let graphs = resp.data?.filter((graph) => {
return Number(graph.totalEdges) > 2000;
});
console.log(graphs);
Display_Ad_Click
ERP_DATA2
wikiKG
getGraph()
根据图集名称从数据库获取图集信息。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
GraphSet
:目标图集。
// 获取名为wikiKG的图集并打印其全部信息
let resp = await conn.getGraph("wikiKG");
console.log(resp.data);
{"id":615,"name":"wikiKG","totalNodes":3546,"totalEdges":2179,"status":"MOUNTED","description":""}
createGraph()
在数据库中新建图集。
参数:
GraphSet
:待创建的图集;必须设置name
字段,description
字段可选。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 创建图集并打印错误代码
let resp = await conn.createGraph({
name: "testNodeJS_SDK",
description: "A test graph for NodeJS_SDK",
});
console.log(resp.status.code_desc);
数据库中已创建名为testNodeJS_SDK
的新图集,驱动程序打印结果如下:
SUCCESS
createGraphIfNotExist()
在数据库中新建图集,若同名图集已存在,忽略报错。
参数:
GraphSet
:待创建的图集;必须设置name
字段,description
字段可选。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 创建图集并打印错误代码
let graph1 = await conn.createGraphIfNotExit({
name: "testNodeJS_SDK",
description: "A test graph for NodeJS_SDK",
});
console.log("First Creation: ", graph1.status.code_desc);
// 尝试再次创建图集并打印错误代码
let graph2 = await conn.createGraphIfNotExit({
name: "testNodeJS_SDK",
description: "A test graph for NodeJS_SDK",
});
console.log("Second Creation: ", graph2.status.code_desc);
A new graphset testNodeJS_SDK
is created in the database, and the driver prints:
First Creation: SUCCESS
Second Creation: SUCCESS
dropGraph()
根据图集名称从数据库中删除图集。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 创建图集后将其删除并打印结果
let resp = await conn.createGraph({
name: "testNodeJS_SDK",
description: "A test graph for NodeJS_SDK",
});
console.log(resp.status.code_desc);
let resp2 = await conn.dropGraph("testNodeJS_SDK");
console.log(resp2);
SUCCESS
{
status: { code: 0, message: '' , code_desc: 'SUCCESS' },
statistics: { totalCost: 16, engineCost: 0, nodeAffected: 0, edgeAffected: 0 },
req: undefined
}
alterGraph()
根据图集名称,修改数据库中已有图集的名称和描述信息。
参数:
oldGraph: GraphSet
:待修改的图集;必须设置name
字段。newGraph: GraphSet
:更新已有图集的配置;必须设置字段“name”和“description”中的一个或两个。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 将图集testNodeJS_SDK重命名为newGraph,添加图集描述并打印结果
let resp = await conn.alterGraph(
{ name: "testNodeJS_SDK" },
{ name: "newGraph", description: "The graphset is altered" }
);
console.log(resp);
{
status: { code: 0, message: '', code_desc: 'SUCCESS' },
statistics: { totalCost: 1, engineCost: 0, nodeAffected: 0, edgeAffected: 0 },
req: undefined
}
truncate()
清空(删除)给定图集中的指定点或边,或清空全部图集。请注意,清空点数据的同时会删除与点相连的所有边。清空操作仅删除点边数据,不会删除schema和属性信息。
参数:
Truncate
:待清空的对象;必须设置graphName
字段,可选择设置schema
字段和dbType
字段,但设置schema
字段时,必须设置dbType
字段。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 清空图集myGraph_1中@user点数据并打印错误代码
let trunc1 = await conn.truncate({
graphName: "myGraph_1",
schema: "user",
dbType: ULTIPA.DBType.DBNODE,
});
console.log(trunc1.status.code_desc);
// 清空图集myGraph_2中全部边数据并打印错误代码
let trunc2 = await conn.truncate({
graphName: "myGraph_2",
dbType: ULTIPA.DBType.DBEDGE,
});
console.log(trunc2.status.code_desc);
// 清空图集myGraph_3并打印错误代码
let trunc3 = await conn.truncate({
graphName: "myGraph_3",
});
console.log(trunc3.status.code_desc);
SUCCESS
SUCCESS
SUCCESS
compact()
清除服务器磁盘上的无效及冗余数据以压缩图集。有效数据不会受到影响。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 压缩图集miniCircle并打印错误代码
let trunc1 = await conn.compact("miniCircle");
console.log(trunc1.status.code_desc);
SUCCESS
hasGraph()
根据图集名称查看数据库中是否存在该图集。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
Boolean
:请求的结果。
// 查看图集miniCircle是否存在并打印结果
let has = await conn.hasGraph("miniCircle");
console.log("has = ", has.data);
has = true
unmountGraph()
卸载图集以节省数据库内存。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 卸载图集miniCircle并打印图集状态
let resp = await conn.unmountGraph("miniCircle");
console.log(resp.status.code_desc);
SUCCESS
mountGraph()
将图集挂载至数据库内存。
参数:
string
:图集名称。RequestConfig
(可选):配置请求。
返回值:
Response
:请求的结果。
// 挂载图集'miniCircle'并打印结果
let resp = await conn.mountGraph("miniCircle");
console.log(resp.status.code_desc);
SUCCESS
完整示例
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { GraphExra } from "@ultipa-graph/ultipa-node-sdk/dist/connection/extra/graph.extra";
import { getEdgesPrintInfo } from "@ultipa-graph/ultipa-node-sdk/dist/printers/edge";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
import { ListFormat } from "typescript";
let sdkUsage = async () => {
// 设置连接
//URI示例: hosts="mqj4zouys.us-east-1.cloud.ultipa.com:60010"
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061",
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
// 建立与数据库的连接
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
// 配置请求
let requestConfig = <RequestType.RequestConfig>{
useMaster: true,
};
// 创建图集newGraph
let graph = await conn.createGraph({ name: "newGraph" }, requestConfig);
console.log(graph.status.code_desc);
// 删除刚刚创建的图集newGraph
let resp = await conn.dropGraph("newGraph");
console.log(resp.status.code_desc);
};
sdkUsage().then(console.log).catch(console.log);