简介
orbit-drupal 是一个可以方便地在 Drupal 后端和前端之间传递数据的 npm 包。它使用了 Orbit.js 和 JSON API 并且与 Drupal 8 和 9 兼容。
这篇文章将介绍 orbit-drupal 的使用方法,包括安装、配置、使用和常见问题的解决方案。
安装
为了使用 orbit-drupal,你需要在本地项目中安装它:
npm i orbit-drupal
配置
使用 orbit-drupal 的第一步是在你的项目中创建一个 Orbit.js Store。你可以在你的项目中直接新建一个 store 目录并在其中创建一个新文件,比如说store.js
,然后在该文件中尝试以下代码:
-- -------------------- ---- ------- ------ - ------- ------ - ---- -------------- ------ ------------- ---- ----------------- ------ ----------- ---- --------------------- ------ - ----- - ---- -------------- ------ - ------------- - ---- --------------------- ----- ------ - - - ----- ---------- ----------- - ------ - ----- -------- -- ----- - ----- -------- - - -- - ----- ------- ----------- - ----- - ----- -------- -- ------ - ----- -------- - - -- -- ----- ------ - --- -------- ------- ------ --- ----- ----- - --- -------- ------ --- ----- ------- - - ----- ---------- ------- -------- -- - ------ --- --------------- ------- ------- ------------- ----- ---------- ----- ------------------------ ---------- ---------- --------------- - ----- ---- -- --------------------- - -------- - ------- --------------------------- --------------------------------- ------ -------------------------------- ------ - - --- - - ----- ----------- - --- ------------- -------- ---------- ------- --- --------------- --- --------------------- - ----- --------------------- - --------------- ------ - ------ ----------- --
上述代码定义了一个包含两个模型的 schema,创建了一个 KeyMap,并构建了一个 JSONAPIsource。JSONAPIsource 将作为 Store 使用的数据源,它使用了 orbit-drupal 包提供的 DrupalJSONAPISource。
JSONAPIsource 的构造函数中包含了以下参数:
schema
: 与你的 Drupal 数据模型相同的 Orbit.js schema。host
: 你的 Drupal 实例的 URL。namespace
: JSON API 的命名空间,通常是 'jsonapi'。keyMap
: 用于存储资源 GUIDs 的键值映射,通常是 store.keyMap。headers
: JSON API 所需的默认头信息。
使用
当配置 store 以后,就可以在 Orbit.js Store 中使用 orbit-drupal 了。下面是一份示例代码:
-- -------------------- ---- ------- ------ - ------ ----------- - ---- ---------- ----- -------- --------------- - ------ ------------- -- -------------- ----- --------- -- ---- - ----- -------- ---------------- - ------ ------------- -- -------------- ----- ---------- -- ---- - ----- -------- ------------------ ------ - ------ -------------- -- - ------------- ----- --------- ----------- - ----- ----- - -- --- - ----- -------- -------------------- ----- - ----- -------- - --------- ----- ------- - ----------------- ----- ---------- ----------- - ------ ---- -- -------------- - ------- - ----- - ----- --------- --- -------- - - - --- ------ -------------- -- ----------- - -------- ------------------ - ------------------------------- -- -- - ------------------ ------------ --- ----------------------------------- -- -- - ---------------------- ------------ --- ------------------------------- -- -- - ------------------- ----------- --- -
上述示例中,我们创建了一个 fetchAuthor 和 fetchArticle 函数来从 Store 中查询一个 Drupal 实例的作者和文章记录。createAuthor 和 createArticle 函数用于创建一个新的作者或文章。最后,listenForUpdates 函数将为我们的数据库资源更改提供监听器。
常见问题
如何检索具有嵌套关系的 JSON API 模型?
当你需要通过 Orbit.js Store 检索具有嵌套关系的 JSON API 模型时,可以在查询中使用 include 来为查询进行组合。例如:
import { store } from './store'; async function fetchArticleWithAuthor(id) { return store.query(q => q.findRecord({ type: 'article', id, options: { include: ['author'] } }) ); }
如何处理 JSON API 异常?
当你使用 Orbit.js Store 与 Drupal 通信时遇到异常,你可以通过 try/catch 块来处理这些异常。例如:
-- -------------------- ---- ------- ----- -------- -------------------- ----- - --- - ----- -------- - --------- ----- ------- - ----------------- ----- ---------- ----------- - ------ ---- -- -------------- - ------- - ----- - ----- --------- --- -------- - - - --- ------ -------------- -- ----------- - ----- ------- - -------------------- -------- -------- ----------- - -
结论
使用 orbit-drupal,我们可以方便地在我们的 Drupal 项目中进行前端开发,而不必担心与后端 API 的连接问题。上述示例代码只是 orbit-drupal 的基本用法,当你深入学习 orbit-drupal 进行更高级的操作和问题解决时,你会发现它可以帮助你更好地快速构建 Drupal 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572f581e8991b448e9199