后端联调开发
本项目使用 PocketBase SDK 与后端进行交互。
src/lib/pocketbase.ts 已经导出了 pb 实例,直接使用即可。
主要开发模式如下:
1. 基础调用
在组件中通过 pb 实例访问集合:
tsx
import { pb } from '@/lib/pocketbase';
// 获取列表
const records = await pb.collection('your_collection').getList(1, 20, {
filter: 'status = "active"',
sort: '-created',
});
// 创建记录
const record = await pb.collection('your_collection').create({
title: 'Hello World',
user: pb.authStore.model?.id,
});2. 文件上传与展示
- 上传:使用
FormData对象。 - 展示:使用
pb.files.getURL(record, filename)生成完整 URL(或通过pb.baseUrl自行拼接)。
tsx
const formData = new FormData();
formData.append('avatar', fileInput.files[0]);
await pb.collection('users').update('RECORD_ID', formData);
// 获取图片 URL
const url = pb.files.getURL(record, record.avatar);3. 实时订阅
如果功能需要实时更新(如聊天、通知),可以使用 subscribe:
tsx
useEffect(() => {
pb.collection('your_collection').subscribe('*', (e) => {
console.log(e.record); // 实时接收更新
});
return () => { pb.collection('your_collection').unsubscribe(); };
}, []);4. 调试建议
- 使用浏览器控制台查看 Network 请求。PocketBase 的请求通常是标准的 RESTful 调用。
- 检查
pb.authStore.isValid确认登录状态。 - 如果请求返回 403,请检查 PocketBase 后端的 API Rules 配置是否允许当前用户的角色访问。