什麼是 PocketBase 以及如何使用它?

什麼是 PocketBase 以及如何使用它?

PocketBase 是一個開源後端,由具有數據驗證、實時訂閱和易於使用的 REST API 的嵌入式 SQLite 數據庫組成。它還為媒體文件提供身份驗證和文件存儲。

PocketBase 非常適合您因為時間限製或方便而不希望為其構建後端的項目,因為它完全可移植並且需要最少的設置。它還集成了 Vue、Svelte、React、Angular 和 Flutter 等流行技術。

PocketBase提供的服務

PocketBase 提供了 SupaBase 等其他後端提供商提供的大部分服務。

  • SQLite 數據庫:PocketBase 包含一個嵌入式 SQLite 數據庫。這不同於其他使用大型數據庫(如 PostgreSQL 或 MySQL)的後端提供商。SQLite 的使用使 PocketBase 更加輕量級。您還可以通過 API 訂閱實時數據庫事件。
  • 身份驗證:PocketBase 支持電子郵件/密碼身份驗證,以及通過 Facebook、Google、GitLab 和 GitHub 進行的 OAuth2 身份驗證。
  • 文件存儲:您可以使用 PocketBase 將照片、音頻和視頻文件上傳到本地存儲或 S3 存儲桶。
  • 管理儀表板:管理儀表板允許您在數據庫中創建和管理集合。您還可以上傳文件、查看日誌文件以及配置發送電子郵件的設置,

根據文檔,PocketBase 可以輕鬆地為 6 個虛擬專用服務器上的 10,000 多個並發和持久實時連接提供服務,使其成為中小型應用程序的負擔得起的後端選擇。

請注意,PocketBase 只能垂直縮放。這意味著您需要添加更多 CPU 和 RAM 來提高處理能力。如果您有一個大型應用程序,請考慮像 Firebase 這樣允許水平擴展的後端提供商。

開始使用 PocketBase

目前PocketBase提供了兩種SDK:

  • 一個 JavaScript SDK,您可以將其與 Svelte、React、Vue 和 Angular 等 JavaScript 框架一起使用。
  • 用於 Flutter 應用程序的 Dart SDK。

最簡單的入門方法是下載 PocketBase。有多個鏈接,因此請確保下載與您的環境兼容的鏈接。

下載後,解壓縮並導航到 pocketbase 文件夾。然後在終端中運行此命令:

./pocketbase serve

此命令應在這些路由上啟動 Web 服務器。

  • 服務器:http://127.0.0.1:8090/
  • 休息API:http://127.0.0.1:8090/api/
  • 管理界面:http://127.0.0.1:8090/_/

導航到 http://127.0.0.1:8090/_/ URL 以使用管理儀表板創建您的第一個集合。

在 PocketBase 中創建一個集合

第一次打開管理 UI 時,它會要求提供電子郵件地址和密碼以創建管理員帳戶。

這是管理 UI 的樣子:

Pocketbase 管理界面

單擊管理 UI 中的新建收藏按鈕將打開一個收藏面板,您可以填寫詳細信息以創建新收藏。

以下是創建名為 todos 的集合的方法,該集合由標題和已完成的字段組成:

Todo 口袋系列

集合可以是 base 或 auth 集合。基本集合是默認集合類型,您可以將其用於任何類型的數據。auth 集合包含用於管理用戶的額外字段,例如用戶名、電子郵件和已驗證。

您不需要使用管理 UI 來創建集合;您可以使用 Web API 創建一個。PocketBase 文檔提供了特定於 SDK 的示例,說明如何通過 API 創建和管理集合。您可以創建、查看、更新、刪除或導入集合。

在 React 應用程序中使用 PocketBase

JavaScript SDK 允許您從 React 項目與 PocketBase 交互。

接下來,首先創建一個 React 項目。

然後,通過 npm 在 React 項目中安裝 PocketBase JavaScript SDK:

npm install pocketbase --save

接下來,在 app.js 中,導入 PocketBase 並對其進行初始化。

import PocketBase from 'pocketbase';
const pb = new PocketBase('http://127.0.0.1:8090');

為了說明 PocketBase 如何集成 React,您將為待辦事項應用程序創建輔助函數。這些函數將創建、更新、檢索和刪除項目。

創建待辦事項

在 app.js 中,創建一個名為 addTodo 的函數。

const addTodo = async (todo) => {
try {
   const record = await await pb.collection("todos").create(todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

此函數在 todos 集合中添加一條新記錄。

更新待辦事項

要更新待辦事項集合中的記錄,請創建一個名為 updateTodo 的函數並使用更新方法。

const updateTodo = async (record_id, todo) => {
try {
   const record = await pb.collection("todos").update(record_id, todo);
   return record;
 } catch (error) {
   return { error: error.message };
 }
};

updateTodo 函數根據記錄 Id 找到待辦事項,並用新數據更新它。

刪除待辦事項

在 app.js 中,創建一個名為 deleteTodo 的函數,用於刪除待辦事項集合中的記錄。

const deleteTodo = async (record_id) => {
try {
   await pb.collection("todos").delete(record_id);
 } catch (error) {
   return { error: error.message };
 }
};

檢索待辦事項

您可以檢索單個待辦事項或集合中的所有項目。

此函數通過 id 檢索單個待辦事項:

const getTodo = async (record_id) => {
try {
   const record = await pb.collection("todos").getOne(record_id, {
     expand: "relField1,relField2.subRelField",
   });
   return record
 } catch (error) {
   return { error: error.message };
 }
};

下面的函數將檢索 todo 集合中的所有記錄:

const getTodos = async (record_id) => {
  try {
    const records = await pb
      .collection("todos")
      .getFullList(200 /* batch size */, {
        sort: "-created",
      });
    return records;
  } catch (error) {
    return { error: error.message };
  }
}

您可以使用這些函數來創建和更新應用程序的 UI。

更詳細的示例請參見PocketBase 記錄 API文檔或在“Admin UI > Collections > API Preview”中生成的 API 文檔。您應該能夠訪問您收藏的列表、查看、創建、更新、刪除和實時文檔。

生成的api文檔

為什麼你應該使用 PocketBase

PocketBase 是中小型項目的最佳後端。它需要最少的設置並且易於使用。它提供了兩個客戶端 SDK——一個 JavaScript SDK 和一個 Dart SDK——你可以在網絡和移動應用程序中使用它。

PocketBase 也是可自我託管的,您可以將其託管在本地服務器或 VPS 上。雖然它不支持雲功能,但您可以將其用作 Go 框架並使用自定義業務邏輯創建您自己的應用程序。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *