修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v4.5
搜索
    v4.5

      Schema和属性管理

      本节为您介绍如何使用Connection对象的方法管理图集中点和边的schema与属性。

      每个示例主要展示如何使用所列方法。点击完整示例查看完整代码示例。

      Schema

      showSchema()

      从当前图集获取全部点、边的schema信息。

      参数:

      • RequestConfig(可选):配置请求。

      返回值:

      • Schema[]:当前图集全部schema列表。

      // 获取图集UltipaTeam的所有schema并打印schema的类型和名称
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.showSchema(requestConfig);
      const dataList = resp.data?.map((item) => ({
        Name: item.name,
        dbType: Number(item.totalNodes) >= 0 ? "DBNODE" : "DBEDGE",
      }));
      console.log(dataList);
      

      [
        { Name: 'default', dbType: 'DBNODE' },
        { Name: 'member', dbType: 'DBNODE' },
        { Name: 'organization', dbType: 'DBNODE' },
        { Name: 'default', dbType: 'DBEDGE' },
        { Name: 'reportsTo', dbType: 'DBEDGE' },
        { Name: 'relatesTo', dbType: 'DBEDGE' }
      ]
      

      getSchema()

      从当前图集获取一个点schema或一个边schema。

      参数:

      • string:schema名称。
      • ULTIPA.DBType:schema类型(点schema 或边schema)。
      • RequestConfig(可选):配置请求。

      返回值:

      • Schema:目标schema。

      // 获取图集UltipaTeam中名为member的点schema和名为connectsTo的边schema,并打印其信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let nodeInfo = await conn.getSchema(
        "member",
        ULTIPA.DBType.DBNODE,
        requestConfig
      );
      console.log("NodeSchema: ", nodeInfo.data);
      
      let edgeInfo = await conn.getSchema(
        "connectsTo",
        ULTIPA.DBType.DBEDGE,
        requestConfig
      );
      
      console.log("EdgeSchema: ", edgeInfo.data);
      

      {
       NodeSchema:  {
        name: 'member',
        description: '',
        properties: [
          {
            name: 'name',
            type: 'string',
            description: '',
            lte: 'false',
            extra: '{}'
          },
          {
            name: 'title',
            type: 'string',
            description: '',
            lte: 'false',
            extra: '{}'
          },
          {
            name: 'profile',
            type: 'string',
            description: '',
            lte: 'false',
            extra: '{}'
          },
          {
            name: 'age',
            type: 'int32',
            description: '',
            lte: 'false',
            extra: '{}'
          }
        ],
        totalNodes: '7'
      }
      EdgeSchema:  {}
      

      showNodeSchema()

      获取当前图集的全部点schema。

      参数:

      • RequestConfig(可选):配置请求。

      返回值:

      • Schema[]:当前图集全部点schema列表。

      // 获取图集UltipaTeam的全部点schema并打印其名称
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let dataOri = await conn.showNodeSchema(requestConfig);
      const schemaInfo = dataOri.data?.map((item) => item.name);
      console.log("SchemaName: ", schemaInfo);
      

      SchemaName:  [ 'default', 'member', 'organization' ]
      

      showEdgeSchema()

      获取当前图集的全部边schema。

      参数:

      • RequestConfig(可选):配置请求。

      返回值:

      • Schema[]当前图集的全部边schema列表。

      // 获取图集UltipaTeam的全部边schema并打印其名称
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let dataOri = await conn.showNodeSchema(requestConfig);
      const schemaInfo = dataOri.data?.map((item) => item.name);
      console.log("SchemaName: ", schemaInfo);
      

      SchemaName:  [ 'default', 'reportsTo', 'relatesTo']
      

      getNodeSchema()

      获取当前图集的一个点schema。

      参数:

      • string:schema名称。
      • RequestConfig(可选):配置请求。

      返回值:

      • Schema:目标点schema。

      // 获取图集UltipaTeam中名为member的点schema并打印其属性信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.getNodeSchema("member", requestConfig);
      console.log("Property: ", resp.data?.properties);
      

      Property:  [
        {
          name: 'name',
          type: 'string',
          description: '',
          lte: 'false',
          extra: '{}'
        },
        {
          name: 'title',
          type: 'string',
          description: '',
          lte: 'false',
          extra: '{}'
        },
        {
          name: 'profile',
          type: 'string',
          description: '',
          lte: 'false',
          extra: '{}'
        },
        {
          name: 'age',
          type: 'int32',
          description: '',
          lte: 'false',
          extra: '{}'
        }
      ]
      

      getEdgeSchema()

      获取当前图集的一个边schema。

      参数:

      • string:schema名称。
      • RequestConfig(可选):配置请求。

      返回值:

      • Schema:目标边schema。

      // 获取图集UltipaTeam中名为relatesTo的边schema并打印其属性信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.getEdgeSchema("relatesTo", requestConfig);
      console.log("Property: ", resp.data?.properties);
      

      Property:  [
        {
          name: 'type',
          type: 'string',
          description: '',
          lte: 'false',
          extra: '{}'
        }
      ]
      

      createSchema()

      在当前图集新建一个schema。

      参数:

      • Schema:待创建的schema;必须设置name字段和dbType字段,desc(描述的缩写)和 properties 是可选的。
      • boolean:是否创建属性,默认为false
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      // 在图集'UltipaTeam'中创建点schema'utility'(包含属性)并打印其所有信息。
      
      const property1: ULTIPA.Header = {
        name: "name",
        type: ULTIPA.PropertyType.string,
      };
      const property2: ULTIPA.Header = {
        name: "purchaseDate",
        type: ULTIPA.PropertyType.datetime,
      };
      
      let nodePro = await conn.createSchema(
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "utility",
          properties: [property1, property2],
          desc: "Office utilities",
        },
        true,
        requestConfig
      );
      console.log("Node Schema Creation: ", nodePro.status.code_desc);
      console.log((await conn.getNodeSchema("utility", requestConfig)).data);
      
      // 在图集'UltipaTeam'中创建边Schema'managedBy'(无属性)并打印其所有信息。
      
      let edgePro = await conn.createSchema(
        {
          dbType: ULTIPA.DBType.DBEDGE,
          name: "managedBy",
        },
        false,
        requestConfig
      );
      console.log("Edge Schema Creation: ", edgePro.status.code_desc);
      console.log((await conn.getEdgeSchema("managedBy", requestConfig)).data);
      

      Node Schema Creation:  SUCCESS
      {
        name: 'utility',
        description: 'Office utilities',
        properties: [
          {
            name: 'name',
            type: 'string',
            description: '',
            lte: 'false',
            extra: '{}'
          },
          {
            name: 'purchaseDate',
            type: 'datetime',
            description: '',
            lte: 'false',
            extra: '{}'
          }
        ],
        totalNodes: '0'
      }
      Edge Schema Creation:  SUCCESS
      { name: 'managedBy', description: '', properties: [], totalEdges: '0' }
      

      createSchemaIfNotExist()

      在当前图集新建一个schema,若同名schema已存在,忽略报错。

      参数:

      • Schema:待创建的schema;必须设置name字段和dbType字段,description字段和properties字段可选。
      • RequestConfig(可选):配置请求。

      返回值:

      • Boolean: 创建是否发生。

      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      // 在图集'UltipaTeam'中创建一个Schema,并打印是否忽略重复创建。
      
      let creation1 = await conn.createSchemaIfNotExist(
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "utility",
          desc: "Office utilities",
        },
        requestConfig
      );
      console.log("Ignore repeated creation: ", creation1.data);
      
      // 再次创建相同的模式,并打印是否忽略重复创建。
      
      let creation2 = await conn.createSchemaIfNotExist(
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "utility",
          desc: "Office utilities",
        },
        requestConfig
      );
      console.log("Ignore repeated creation: ", creation2.data);
      

      Ignore repeated creation:  false
      Ignore repeated creation:  true
      

      alterSchema()

      根据schema名称修改当前图集中某个schema的名称和描述。

      参数:

      • Schema:图集中待修改的schema;必须设置name字段和DbType字段。
      • Schema:更新已有schema的配置;字段 namedesc(描述的缩写)中的一个或两个必须设置。
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      // 将图集UltipaTeam中的一个点schema由utility改为securityUtility并删除其描述
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.alterSchema(
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "utility",
          desc: "Office utilities",
        },
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "securityUtility",
          desc: "",
        },
        requestConfig
      );
      console.log(resp.status.code_desc);
      

      SUCCESS
      

      dropSchema()

      根据schema名称从当前图集删除某个schema。

      参数:

      • Schema:图集中待删除的schema;必须设置name字段和DbType字段。
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      // 在图集UltipaTeam中删除名为utility的点schema
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.dropSchema(
        {
          dbType: ULTIPA.DBType.DBNODE,
          name: "utility",
        },
        requestConfig
      );
      console.log(resp);
      

      {
        status: { code: 0, message: '', code_desc: 'SUCCESS' },
        statistics: { totalCost: 1, engineCost: 0, nodeAffected: 0, edgeAffected: 0 },
        req: undefined
      }
      

      Property

      showProperty()

      获取当前图集的自定义点属性信息或边属性信息。

      参数:

      • DBType属性类型(点属性或边属性)。
      • string:schema名称。
      • RequestConfig(可选):配置请求。

      返回值:

      • Property[]:当前图集全部目标属性列表。

      // 检索图集 'UltipaTeam' 中的所有点属性,并打印它们的名称和关联的schema
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      const nameList = (await conn.showNodeSchema(requestConfig)).data?.map(
        (item) => item.name
      )!;
      
      for (let i = 0; i < nameList.length; i++) {
        let resp = await conn.showProperty(
          ULTIPA.DBType.DBNODE,
          nameList[i],
          requestConfig
        );
        console.log(
          "Schema",
          nameList[i],
          "contains properties",
          resp.data?.map((item) => item.name)
        );
      }
      

      Schema default contains properties []
      Schema member contains properties [ 'name', 'title', 'profile' ]
      Schema organization contains properties [ 'name', 'logo' ]
      

      showNodeProperty()

      获取当前图集的自定义点属性信息。

      参数:

      • string:schema名称。
      • RequestConfig(可选):配置请求。

      返回值:

      • Property[]:当前图集全部目标属性列表。

      // 获取图集UltipaTeam中名为member的点schema其关联的所有自定义点属性信息并打印属性数量
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let NodePro = await conn.showNodeProperty("member", requestConfig);
      console.log(NodePro.data?.length);
      

      3
      

      showEdgeProperty()

      获取当前图集的自定义边属性信息。

      参数:

      • string:schema名称。
      • RequestConfig(可选):配置请求。

      返回值:

      • Property[]:当前图集全部目标属性列表。

      // 获取图集UltipaTeam中名为relatesTo的边schema其关联的所有自定义边属性并打印属性名称
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let edgePro = await conn.showEdgeProperty("relatesTo", requestConfig);
      console.log(edgePro.data?.map((item) => item.name));
      

      [ 'type' ]
      

      getProperty()

      获取当前图集的一个自定义点属性或边属性。

      参数:

      • ULTIPA.DBType属性类型(点属性或边属性)。
      • string:schema名称。
      • string:属性名称
      • RequestConfig(可选):配置请求。

      返回值:

      • Property:目标属性。

      // 获取图集UltipaTeam的点属性@member.title并打印其全部信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.getProperty(
        ULTIPA.DBType.DBNODE,
        "member",
        "title",
        requestConfig
      );
      console.log(resp.data);
      

      {
        name: 'title',
        type: 'string',
        lte: 'false',
        read: '1',
        write: '1',
        schema: 'member',
        description: '',
        extra: '{}',
        encrypt: ''
      }
      

      getNodeProperty()

      获取当前图集的一个自定义点属性。

      参数:

      • string:schema名称。
      • string:属性名称
      • RequestConfig(可选):配置请求。

      返回值:

      • Property:目标属性。

      // 获取图集UltipaTeam的点属性@member.title并打印其全部信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.getNodeProperty(
        "member",
        "title",
        requestConfig
      );
      console.log(resp.data);
      

      {
        name: 'title',
        type: 'string',
        lte: 'false',
        read: '1',
        write: '1',
        schema: 'member',
        description: '',
        extra: '{}',
        encrypt: ''
      }
      

      getEdgeProperty()

      Retrieves a custom property of edges from the current graphset.

      参数:

      • string:schema名称。
      • string:属性名称
      • RequestConfig(可选):配置请求。

      返回值:

      • Property:目标属性。

      // 获取图集UltipaTeam的边属性@relatesTo.type并打印其全部信息
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp = await conn.getEdgeProperty("relatesTo", "type", requestConfig);
      console.log(resp.data);
      

      {
        name: 'type',
        type: 'string',
        lte: 'false',
        read: '1',
        write: '1',
        schema: 'relatesTo',
        description: '',
        extra: '{}',
        encrypt: ''
      }
      

      createProperty()

      在当前图集为点schema或边schema创建一个属性。

      参数:

      • ULTIPA.DBType属性类型(点属性或边属性)。
      • string:schema名称,可用*指定全部schema。
      • Property:待创建的属性;必须设置name字段和type字段,description字段可选。
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      //  在图集UltipaTeam中为名为member的点schema创建两个属性并打印错误代码
      
      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      let resp1 = await conn.createProperty(
        ULTIPA.DBType.DBNODE,
        "member",
        { name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
        requestConfig
      );
      console.log(resp1.status.code_desc);
      
      let resp2 = await conn.createProperty(
        ULTIPA.DBType.DBNODE,
        "member",
        { name: "age", schema: "member", type: ULTIPA.PropertyType.int32 },
        requestConfig
      );
      console.log(resp2.status.code_desc);
      

      SUCCESS
      SUCCESS
      

      createPropertyIfNotExist()

      在当前图集为某个点schema或边schema新建一个属性,若同名属性已存在,忽略报错。

      参数:

      • ULTIPA.DBType属性类型(点属性或边属性)。
      • string:schema名称,可用*指定全部schema。
      • Property:待创建的属性;必须设置name字段和type字段,description字段可选。
      • RequestConfig(可选):配置请求。

      返回值:

      • Boolean:创建是否发生。

      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      // 为图集UltipaTeam中名为'member'的点Schema新建一个属性,并打印是否忽略重复创建。
      
      let resp1 = await conn.createPropertyIfNotExist(
        ULTIPA.DBType.DBNODE,
        "member",
        { name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
        requestConfig
      );
      console.log("Ignore repeated creation: ", resp1.data);
      
      // 在图集UltipaTeam中再次创建相同的属性,并打印是否忽略重复创建。
      
      let resp2 = await conn.createPropertyIfNotExist(
        ULTIPA.DBType.DBNODE,
        "member",
        { name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
        requestConfig
      );
      console.log("Ignore repeated creation: ", resp2.data);
      

      Ignore repeated creation:  false
      Ignore repeated creation:  true
      

      alterProperty()

      根据属性名称修改当前图集中某个自定义属性的名称和描述。

      参数:

      • ULTIPA.DBType属性类型(点属性或边属性)。
      • Property:图集中待修改的属性;必须设置name字段和schema字段(可用*指定全部schema)。
      • Property:更新已有属性的配置;字段 namedescription 中的一个或两个必须设置。
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      // 将图集UltipaTeam中全部点schema下的name属性改为Name
      
      let resp = await conn.alterProperty(
        ULTIPA.DBType.DBNODE,
        { name: "name", schema: "*" },
        { name: "Name", schema: "*" },
        requestConfig
      );
      console.log(resp.status.code_desc);
      

      SUCCESS
      

      dropProperty()

      根据属性名称和关联schema从当前图集删除某自定义属性。

      参数:

      • ULTIPA.DBType属性类型(点属性或边属性)。
      • string:schema名称。
      • string:属性名称
      • RequestConfig(可选):配置请求。

      返回值:

      • Response:请求的结果。

      let requestConfig = <RequestType.RequestConfig>{
        graphSetName: "UltipaTeam",
        useMaster: true,
      };
      
      // 删除图集UltipaTeam中与全部点schema关联的startDate属性并打印错误代码
      
      let resp1 = await conn.dropProperty(
        ULTIPA.DBType.DBNODE,
        "*",
        "startDate",
        requestConfig
      );
      console.log(resp1.status.code_desc);
      
      //删除图集UltipaTeam的点属性@member.name并打印错误代码
      
      let resp2 = await conn.dropProperty(
        ULTIPA.DBType.DBNODE,
        "member",
        "name",
        requestConfig
      );
      console.log(resp1.status.code_desc);
      

      SUCCESS
      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>{
          graphSetName: "UltipaTeam",
          useMaster: true,
        };
      
        // 在图集UltipaTeam中新建名为utility的点schema(同时创建属性)并打印错误代码
        
          const property1: ULTIPA.Header = {
            name: "name",
            type: ULTIPA.PropertyType.string,
          };
          const property2: ULTIPA.Header = {
            name: "purchaseDate",
            type: ULTIPA.PropertyType.datetime,
          };
      
          let nodePro = await conn.createSchema(
            {
              dbType: ULTIPA.DBType.DBNODE,
              name: "utility",
              properties: [property1, property2],
              desc: "Office utilities",
            },
            true,
            requestConfig
          );
          console.log("Node Schema Creation: ", nodePro.status.code_desc);
          console.log((await conn.getNodeSchema("utility", requestConfig)).data);
      };
      
      sdkUsage().then(console.log).catch(console.log);
      
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写