npm 包 @bentley/imodelhub-client 使用教程

阅读时长 9 分钟读完

在前端开发中,使用 npm 包是非常常见的,它可以帮助开发者快速构建自己的项目,提高开发效率。当涉及到使用 Bentley 的 iModelHub 时,我们可以使用它们提供的 npm 包 @bentley/imodelhub-client。它是一个非常好用的 npm 包,可以帮助我们轻松地实现与 iModelHub 的交互。

在这篇文章中,我们将提供一个详细的教程,介绍如何使用 @bentley/imodelhub-client。我们还将提供示例代码和指导意义,帮助读者更好地理解该 npm 包的使用方法。

安装

首先,我们需要在自己的项目中安装 @bentley/imodelhub-client。可以使用 npm 命令来安装,具体命令如下:

注意,在项目根目录中执行该命令。

使用示例

创建 Access Token

使用 @bentley/imodelhub-client 与 iModelHub 交互需要一个 Access Token,我们可以通过以下代码获取:

在进行下一步操作前,请确保已经获得了 Access Token。如果 Access Token 获得失败,则意味着你需要更换你的凭据信息。

获取 Projects

获取和创建项目是管理项目和 iModelHub 上的 iModel 的关键功能。使用以下代码可以获取所有项目:

这些示例代码使用 IModelHubClient 和 Projects API 来访问 iModelHub 中的项目。其中 projectScopeRequestOptions 参数控制如何过滤项目列表,例如选择指定项目。如果你不需要使用过滤器,则不需要传递这个参数。需要注意的是,这个请求需要一个有效的 Access Token。

获取或创建 Briefcases

Briefcases 是 iModel 支持的特殊形式的锁定机制,用于保护一组人对同一份数据的更改。通常,应用程序使用 Briefcase 来指导如何在很短时间内同步和合并数据更改。以下示例展示了如何在 Briefcase 中列出 Briefcases:

与获取项目相同,该请求也需要有效的 Access Token。briefcaseQuery 对象将筛选器传递给服务,并返回匹配筛选器的 Briefcases。

上传 Changesets

使用上一步列出的 Briefcases 集合,可以创建或更新 Briefcase。Briefcase 必须通过 Changeset 更新,并且每个 Briefcase 只能断开或合并成功。以下示例集合演示了如何创建 Changeset 并更新 Briefcase:

-- -------------------- ---- -------
------ -
  ---------- ---------------
  ----------------------- ----------------------- ------------------ ----------
- ---- ----------------------------

----- --------------- -------------- - -
  ------------ ----------------------
  ------------------ ------------------------------
  ------------ --------------
--

----- --------- - --- --------------------------
----- ------------------------------------------------------ ------------ -------------- -----------
----- ----------------------- ---------------------- - - ----------------- -------- ---------- --------- --

----- -------- ---------------------------- ------------ ----------------------- ------------------------ --------------- -
    -- -- --- -------------- ------- -----
    ----- ----------------- - --- --------------------
    ----- ----- - ----- ------------------------------------------------------- -------

    ----- ------------------- ------------------ - -
        ------- ------
        -------- - -------------- ------- --------------------- --
        ----- ---------------------------------
      --
    ----- --- - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ----- -------------- - ----- -------------------- ---- --------------------
    ------ --------------------
-

changesetFileDir 是指变更集的配置文件路径,其中包含待提交的变更集文件名及其哈希校验值。诸如 userName 和 password 等配置正在从 imodels 配置中提供。

下载 Changesets

以下代码展示如何使用 Briefcases 和 Changeset 对象下载匹配的 Briefcase 和 与 Briefcase 关联的 Changeset:

-- -------------------- ---- -------
------ -
  --------------- ---------------- ---------- ----------------------
- ---- ----------------------------

----- --------------- - --- ------------------
----- -------------- - --- -----------------
-------------------------- - ----------------------
-----------------------------------
---------------------- - ----------------------------

----- ----------- ----------- - ----- ---------------------------------------------- ------- --------- ----------------
----- --------------------- ------ - ------------------ - -- - ---------------------------- - -------- - --

----- ------------------------ --------- - --------- - ------------------------------------- ---------- -- --------------- --- ----------------------
-- ------------------------ --- ---------- -
  -- --
-

该代码获取与 briefcase 中关联的 Changesets 列表,请求中对它们进行排序,并通过读取 DownloadUrl 获取与每个 Changeset 相关的二进制数据。根据本地 briefcase 最后一个下载的 Changeset,更新 Briefcase 客户端状态。

这个操作的目的是确保 Briefcase 被更新到最新的 Changeset,并确保 iModelHub 表示 Briefcase 已经从客户端下载并有关联的 Briefcase 与 Changeset。

总结

在本文中,我们仔细介绍了 @bentley/imodelhub-client 的使用方法和示例代码。你可以通过安装和引入这个 npm 包,实现与 iModelHub 的交互。这个教程提供的深度较高,可以让读者深入理解 @bentley/imodelhub-client 的使用方法,并可以根据实际情况更改示例代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedb05eb5cbfe1ea06110d0

纠错
反馈