在前端开发中,使用 npm 包是非常常见的,它可以帮助开发者快速构建自己的项目,提高开发效率。当涉及到使用 Bentley 的 iModelHub 时,我们可以使用它们提供的 npm 包 @bentley/imodelhub-client。它是一个非常好用的 npm 包,可以帮助我们轻松地实现与 iModelHub 的交互。
在这篇文章中,我们将提供一个详细的教程,介绍如何使用 @bentley/imodelhub-client。我们还将提供示例代码和指导意义,帮助读者更好地理解该 npm 包的使用方法。
安装
首先,我们需要在自己的项目中安装 @bentley/imodelhub-client。可以使用 npm 命令来安装,具体命令如下:
npm install @bentley/imodelhub-client --save
注意,在项目根目录中执行该命令。
使用示例
创建 Access Token
使用 @bentley/imodelhub-client 与 iModelHub 交互需要一个 Access Token,我们可以通过以下代码获取:
import { AuthorizationClient } from "@bentley/imodeljs-clients"; const authClient = new AuthorizationClient(); const token = await authClient.getAccessToken();
在进行下一步操作前,请确保已经获得了 Access Token。如果 Access Token 获得失败,则意味着你需要更换你的凭据信息。
获取 Projects
获取和创建项目是管理项目和 iModelHub 上的 iModel 的关键功能。使用以下代码可以获取所有项目:
import { BriefcaseId, Project, ProjectScopeRequestOptions, IModelHubClient, } from "@bentley/imodeljs-clients"; const imodelhubClient = new IModelHubClient(); const projectScopeRequestOptions = new ProjectScopeRequestOptions(); const projectList: Project[] = await imodelhubClient.projects.get(authContext, projectScopeRequestOptions);
这些示例代码使用 IModelHubClient 和 Projects API 来访问 iModelHub 中的项目。其中 projectScopeRequestOptions 参数控制如何过滤项目列表,例如选择指定项目。如果你不需要使用过滤器,则不需要传递这个参数。需要注意的是,这个请求需要一个有效的 Access Token。
获取或创建 Briefcases
Briefcases 是 iModel 支持的特殊形式的锁定机制,用于保护一组人对同一份数据的更改。通常,应用程序使用 Briefcase 来指导如何在很短时间内同步和合并数据更改。以下示例展示了如何在 Briefcase 中列出 Briefcases:
import { BriefcaseId, IModelHubClient, BriefcaseQuery, Briefcase, } from "@bentley/imodeljs-clients"; const imodelhubClient = new IModelHubClient(); const briefcaseQuery = new BriefcaseQuery(); briefcaseQuery.iModelId = imodelId; const briefcases: Briefcase[] = await imodelhubClient.briefcases.get(authContext, projectId, briefcaseQuery);
与获取项目相同,该请求也需要有效的 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