全部查询方法均支持使用可选配置参数(RequestConfig
或InsertRequestConfig
)来自定义向数据库发出的请求。您可使用该参数指定各种设置,如图集名称、超时时间和主机,根据自身需求定制请求。
RequestConfig
RequestConfig
用来定义向数据库发送非插入请求时所需的配置。
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
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);
// 指定图集amz为目标图集并使用集群的主节点
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "amz",
useMaster: true,
};
let uqlResult = await conn.uql(`find().nodes([1]) as n return n.name`, requestConfig);
console.log(uqlResult.data?.alias("n.name").asAttrs());
};
sdkUsage().then(console.log).catch(console.log);
RequestConfig
包含如下字段:
字段 |
类型 |
描述 |
---|---|---|
graphSetName |
string | 待使用的图集;若未设定,则为建立连接时配置的defaultGraph |
timeout |
number | 请求超时时间,单位为秒;若未设定,则为建立连接时配置的timeout |
clusterID |
string | 指定要使用的集群 |
timeZone |
string | 时区,如果没有设置,则使用建立连接时配置的 timeZone |
timeZoneOffset |
number | 当前时区与UTC的时差(以分钟为单位) |
timestampToString |
boolean | 是否将时间戳转换为字符串 |
threadNum |
number | 线程数 |
stream |
Stream | 以流的方式返回结果 |
retry |
object | 请求失败时的重试配置,包含两个键:current 和max ,均为数字类型。 |
useHost |
string | 将请求发送到指定的主机节点,若未设置则随机选择主机节点 |
useMaster |
boolean | 若设置为true,则将请求发送到主节点以确保一致性读取 |
package_limit |
number | 返回的数据包数量限制 |
forceRefresh |
boolean | 是否刷新集群信息 |
logUql |
boolean | 是否打印UQL |
InsertRequestConfig
InsertRequestConfig
用来定义向数据库发送插入或删除数据请求时所需的配置。
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
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);
// 连接到default图集
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
let node1 = new ULTIPA.Node();
node1.schema = "card";
node1.id = "ULTIPA8000000000000001";
node1.values = {balance: Number(3235.2)};
let node2 = new ULTIPA.Node();
node2.schema = "client";
node2.id = "ULTIPA800000000000000B";
node2.values = {level: Number(7)};
let nodes = [node1, node2];
// 将上面的两个节点以覆盖模式插入到图集“test”中。
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_OVERWRITE,
};
let uqlResult = await conn.insertNodesBatchAuto(nodes, insertRequestConfig);
console.log(uqlResult.status.code);
};
sdkUsage().then(console.log).catch(console.log);
InsertRequestConfig
包含如下字段:
字段 |
类型 |
描述 |
---|---|---|
graphSetName |
string[] | 待使用的图集;若未设定,则为建立连接时配置的defaultGraph |
timeout |
number | 请求超时时间,单位为秒;若未设定,则为建立连接时配置的timeout |
clusterID |
string | 指定要使用的集群 |
timeZone |
string | 时区,如果没有设置,则使用建立连接时配置的 timeZone |
timeZoneOffset |
number | 当前时区与UTC的时差(以分钟为单位) |
timestampToString |
boolean | 是否将时间戳转换为字符串 |
threadNum |
number | 线程数 |
stream |
Stream | 以流的方式返回结果 |
retry |
object | 请求失败时的重试配置,包含两个键:current 和max ,均为数字类型。 |
useHost |
string | 将请求发送到指定的主机节点,若未设置则随机选择主机节点 |
useMaster |
boolean | 若设置为true,则将请求发送到主节点以确保一致性读取 |
package_limit |
number | 返回的数据包数量限制 |
forceRefresh |
boolean | 是否刷新集群信息 |
logUql |
boolean | 是否打印UQL |
insertType |
ULTIPA.InsertType | 插入模式(INSERT_TYPE_NORMAL、INSERT_TYPE_UPSERT、INSERT_TYPE_OVERWRITE) |
createNodeIfNotExist |
boolean | 是否在边的起始/终止节点不存在于图中时创建这些节点。 |
silent |
boolean | 是否在成功插入后保持静默,设置为false时返回新插入数据的_id 和 _uuid |