数据类型
Ultipa 属性与 NodeJS 数据类型的对应关系:
Ultipa | NodeJS |
---|---|
string | string |
text | string |
float | string |
double | number |
int32 | number |
uint32 | number |
int64 | string |
uint64 | string |
datetime | string |
timestamp | number |
由于 NodeJS 中
number
的范围有限,故 int64 和 uint64 需用string
表示;出于精度的考虑,float 也需要用string
来表示。
insertNodesBatchBySchema()
InsertNodesBatchBySchema()
可以为某一个点 schema 导入多条数据。
方法及相关接口:
insertNodesBatchBySchema(schema: ULTIPA.Schema,
rows: ULTIPA.Node[],
config: RequestType.InsertRequestConfig
): Promise<ULTIPA.Response<ResponseType.InsertNodes>>
type Schema = {
name: string;
properties: Property[];
}
type Property = {
name: string;
type: PropertyType;
}
class Node {
schema: string;
id: string;
uuid: string;
values: object;
}
示例:为图集 test 的点 schema 'card' 插入多条数据,采用普通插入模式
import { ConnectionPool, RequestType, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为 conn 的连接并使用 default 图集,此部分代码省略
let schema = <ULTIPA.Schema>{
name: "card",
properties: [
{
name: "balance",
type: ULTIPA.PropertyType.PROPERTY_FLOAT,
},
{
name: "level",
type: ULTIPA.PropertyType.PROPERTY_INT32,
},
],
};
let node1 = new ULTIPA.Node();
node1.values = { balance: 3235.2, level: 2 };
let node2 = new ULTIPA.Node();
node2.values = { level: 1 };
let nodes = [node1, node2];
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_NORMAL,
};
let resp = await conn.insertNodesBatchBySchema(schema, nodes, insertRequestConfig);
console.log(resp.status.code_desc);
};
sdkUsage();
insertNodesBatchAuto()
InsertNodesBatchAuto()
可以同时为多个点 schema 导入多条数据,需保证数据携带 schema 信息。
方法及相关接口:
insertNodesBatchAuto(rows: ULTIPA.Node[],
config?: RequestType.InsertRequestConfig
): Promise<ULTIPA.Response<ResponseType.InsertNodes>>
class Node {
schema: string;
id: string;
uuid: string;
values: object;
}
示例:为图集 test 的多个点 schema 插入多条数据,采用插入更新模式
import { ConnectionPool, RequestType, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为 conn 的连接并使用 default 图集,此部分代码省略
let node1 = new ULTIPA.Node();
node1.schema = "card";
node1.id = "ULTIPA8000000000000001";
node1.values = { level: 1 };
let node2 = new ULTIPA.Node();
node2.schema = "client";
node2.id = "ULTIPA800000000000002C";
node2.values = { name: "Grace" };
let nodes = [node1, node2];
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_UPSERT,
};
let resp = await conn.insertNodesBatchAuto(nodes, insertRequestConfig);
console.log(resp.status.code_desc);
};
sdkUsage();
insertEdgesBatchBySchema()
insertEdgesBatchBySchema()
可以为某一个边 schema 导入多条数据。
方法及相关接口:
insertEdgesBatchBySchema(schema: ULTIPA.Schema,
rows: ULTIPA.Edge[],
config: RequestType.InsertRequestConfig
): Promise<ULTIPA.Response<ResponseType.InsertNodes>>
type Schema = {
name: string;
properties: Property[];
}
type Property = {
name: string;
type: PropertyType;
}
class Edge {
schema: string;
from: string;
to: string;
uuid: string;
from_uuid: string;
to_uuid: string;
values: object;
}
示例:为图集 test 的边 schema 'transfer' 插入多条数据,采用普通插入模式,允许创建不存在的端点
import { ConnectionPool, RequestType, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为 conn 的连接并使用 default 图集,此部分代码省略
let schema = <ULTIPA.Schema>{
name: "transfer",
properties: [
{
name: "amount",
type: ULTIPA.PropertyType.PROPERTY_DOUBLE,
},
{
name: "remark",
type: ULTIPA.PropertyType.PROPERTY_STRING,
},
],
};
let edge1 = new ULTIPA.Edge();
edge1.from = "CARD00001";
edge1.to = "CARD00004";
edge1.values = { amount: 140.5, remark: "retail" };
let edge2 = new ULTIPA.Edge();
edge2.from = "CARD00002";
edge2.to = "CARD00004";
edge2.values = { amount: 1999 };
let edges = [edge1, edge2];
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_NORMAL,
createNodeIfNotExist: true,
};
let resp = await conn.insertEdgesBatchBySchema(schema, edges, insertRequestConfig);
console.log(resp.status.code_desc);
};
sdkUsage();
insertEdgesBatchAuto()
insertEdgesBatchAuto()
可以同时为多个边 schema 导入多条数据,需保证数据携带 schema 信息。
方法及相关接口:
insertEdgesBatchAuto(rows: ULTIPA.Edge[],
config: RequestType.InsertRequestConfig
): Promise<ULTIPA.Response<ResponseType.InsertEdges>>
class Edge {
schema: string;
from: string;
to: string;
uuid: string;
from_uuid: string;
to_uuid: string;
values: object;
}
示例:为图集 test 的多个边 schema 插入多条数据,采用插入覆盖模式,允许创建不存在的端点
import { ConnectionPool, RequestType, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
let sdkUsage = async () => {
// 创建名为 conn 的连接并使用 default 图集,此部分代码省略
let edge1 = new ULTIPA.Edge();
edge1.schema = "transfer";
edge1.uuid = "33";
edge1.from = "CARD00001";
edge1.to = "CARD00004";
edge1.values = { amount: 164.5 };
let edge2 = new ULTIPA.Edge();
edge2.schema = "has";
edge2.from = "ULTIPA0000001";
edge2.to = "CARD00004";
let edges = [edge1, edge2];
let insertRequestConfig = <RequestType.InsertRequestConfig>{
graphSetName: "test",
insertType: ULTIPA.InsertType.INSERT_TYPE_OVERWRITE,
createNodeIfNotExist: true,
};
let resp = await conn.insertEdgesBatchAuto(edges, insertRequestConfig);
console.log(resp.status.code_desc);
};
sdkUsage();