uql()
方法及相关类:
uql(uql: string, commonReq?: RequestType.RequestConfig): Promise<ULTIPA.UQLResponse>
使用uql()
进行请求时会返回结果类ULTIPA.UQLResponse。
UQLResponse 的字段:
字段 | 类型 | 说明 |
---|---|---|
data? | ULTIPA.UQLReply | return返回的数据、别名等信息 |
req? | any | 嬴图GQL请求的信息 |
explainPlans? | ExplainPlan | 嬴图GQL语句解析树 |
status | Status | 嬴图服务器返回的执行状态 |
statistic? | Statistic | 执行的统计信息,包含执行时间、影响点边数等 |
ULTIPA.UQLResponse的字段data
是一个ULTIPA.UQLReply类。
UQLReply 的字段:
字段 | 类型 | 说明 |
---|---|---|
datas | DataItem[] | return返回的数据,每个别名对应的DataItem类 |
aliasMap | object | return返回的别名信息 |
statistics | Statistics | 执行的统计信息,包含执行时间、影响点边数等 |
explainPlansTreeTopNode | PlanNode | 嬴图GQL语句解析树顶点 |
UQLReply 的方法:
方法 | 类型 | 说明 |
---|---|---|
toJSON() | object | 将数据(不含aliasMap )组合为json对象 |
singleDataNodes() | Node[] | 将查询结果中的第一个返回值(必须为NODE类型)提取为Node[] |
singleDataEdges() | Edge[] | 将查询结果中的第一个返回值(必须为EDGE类型)提取为Edge[] |
singleDataPaths() | Path[] | 将查询结果中的第一个返回值(必须为PATH类型)提取为Path[] |
singleDataAttrs() | AttrAlias | 将查询结果中的第一个返回值(必须为ATTR类型)提取为AttrAlias |
singleDataArrays() | any[][] | 将查询结果中的第一个返回值(必须为ARRAY类型)提取为any[][] |
singleDataTables() | Table | 将查询结果中的第一个返回值(必须为TABLE类型)提取为Table |
getTables() | Table[] | 将查询结果中所有TABLE类型的返回值提取为Table[] |
get(index: number) | DataItem | 按下标获取查询结果中的某一个返回值(DataItem类) |
alias(alias: string) | DataItem | 按别名获取查询结果中的某一个返回值(DataItem类) |
返回值的别名类型有NODE、EDGE、PATH等,使用DataItem类的相应的方法可以将这些类型转为相应的类,详见返回值的结构化。
toJSON()
示例:发送语句insert().into(@default).nodes({})
,将结果转为json并输出
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为conn的连接,此部分代码省略
let resp = await conn.uql("insert().into(@default).nodes({})");
console.log(resp.data?.toJSON());
};
sdkUsage();
输出:
{
statistics: { totalCost: 57, engineCost: 0, nodeAffected: 1, edgeAffected: 0 },
explainPlansTreeTopNode: null,
datas: []
}
get()
示例:发送语句return now() as currentTime, pi() as PI
,获取第一个返回值
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为conn的连接,此部分代码省略
let resp = await conn.uql("return now() as currentTime, pi() as PI");
console.log(resp.data?.get(0));
};
sdkUsage();
输出:
DataItem {
data: {
alias: 'currentTime',
type: 4,
type_desc: 'RESULT_TYPE_ATTR',
values: [ '2024-03-14 07:33:12.803414' ]
},
alias: 'currentTime',
type: 4,
type_desc: 'RESULT_TYPE_ATTR'
}
alias()
示例:发送语句return now() as currentTime, pi() as PI
,获取第二个返回值
import { ConnectionPool } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为conn的连接,此部分代码省略
let resp = await conn.uql("return now() as currentTime, pi() as PI");
console.log(resp.data?.alias("PI"));
};
sdkUsage();
输出:
DataItem {
data: {
alias: 'PI',
type: 4,
type_desc: 'RESULT_TYPE_ATTR',
values: [ '3.14159265358979' ]
},
alias: 'PI',
type: 4,
type_desc: 'RESULT_TYPE_ATTR'
}