什麼是 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 的樣子:
單擊管理 UI 中的新建收藏按鈕將打開一個收藏面板,您可以填寫詳細信息以創建新收藏。
以下是創建名為 todos 的集合的方法,該集合由標題和已完成的字段組成:
集合可以是 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 文檔。您應該能夠訪問您收藏的列表、查看、創建、更新、刪除和實時文檔。
為什麼你應該使用 PocketBase
PocketBase 是中小型項目的最佳後端。它需要最少的設置並且易於使用。它提供了兩個客戶端 SDK——一個 JavaScript SDK 和一個 Dart SDK——你可以在網絡和移動應用程序中使用它。
PocketBase 也是可自我託管的,您可以將其託管在本地服務器或 VPS 上。雖然它不支持雲功能,但您可以將其用作 Go 框架並使用自定義業務邏輯創建您自己的應用程序。
發佈留言