掌握PocketBase Dart SDK数据操作:CRUD接口全攻略与示例代码

发布时间:2026/8/9 18:35:37
掌握PocketBase Dart SDK数据操作:CRUD接口全攻略与示例代码 掌握PocketBase Dart SDK数据操作CRUD接口全攻略与示例代码【免费下载链接】dart-sdkPocketBase Dart SDK项目地址: https://gitcode.com/gh_mirrors/da/dart-sdkPocketBase Dart SDK是一个强大的工具库专为与PocketBase后端服务交互而设计提供了完整的CRUD创建、读取、更新、删除操作接口。本文将详细介绍如何使用该SDK进行高效的数据管理帮助开发者快速上手并掌握核心功能。一、SDK核心架构与CRUD基础PocketBase Dart SDK的CRUD操作主要通过BaseCrudService抽象类实现该类定义了所有数据操作的通用方法。位于lib/src/services/base_crud_service.dart的核心代码提供了标准化的数据处理流程确保开发者能够以一致的方式操作不同类型的记录。1.1 核心CRUD接口概览BaseCrudService提供了以下关键方法创建(Create)create()- 添加新记录读取(Read)getList()、getOne()、getFirstListItem()、getFullList()- 获取记录列表或单个记录更新(Update)update()- 修改现有记录删除(Delete)delete()- 移除记录这些方法构成了数据操作的基础适用于所有集合类型。二、环境准备与初始化2.1 安装与配置要开始使用PocketBase Dart SDK首先需要在项目中添加依赖。在pubspec.yaml文件中添加dependencies: pocketbase: ^latest_version然后通过以下命令安装依赖git clone https://gitcode.com/gh_mirrors/da/dart-sdk cd dart-sdk dart pub get2.2 客户端初始化创建PocketBase客户端实例连接到你的PocketBase服务import package:pocketbase/pocketbase.dart; final pb PocketBase(https://your-pocketbase-instance.com);三、完整CRUD操作指南3.1 创建记录 (Create)使用create()方法添加新记录。以下示例展示如何在users集合中创建新用户final collection pb.collection(users); try { final newUser await collection.create( body: { name: John Doe, email: johnexample.com, age: 30, }, ); print(New user created: ${newUser.id}); } catch (e) { print(Error creating user: $e); }create()方法支持文件上传通过files参数传递http.MultipartFile列表即可实现。3.2 读取记录 (Read)3.2.1 获取记录列表使用getList()方法获取分页记录列表try { final result await pb.collection(users).getList( page: 1, perPage: 20, filter: age 18, sort: -created, ); print(Total users: ${result.totalItems}); for (final user in result.items) { print(${user.id}: ${user.getString(name)}); } } catch (e) { print(Error fetching users: $e); }3.2.2 获取单个记录通过ID获取特定记录try { final user await pb.collection(users).getOne(RECORD_ID); print(User: ${user.getString(name)}, Email: ${user.getString(email)}); } catch (e) { print(Error fetching user: $e); }3.2.3 获取符合条件的第一条记录使用getFirstListItem()快速获取符合筛选条件的第一条记录try { final admin await pb.collection(users).getFirstListItem(role admin); print(Admin user: ${admin.getString(name)}); } catch (e) { print(Error finding admin: $e); }3.2.4 获取所有记录使用getFullList()一次性获取集合中的所有记录自动处理分页try { final allUsers await pb.collection(users).getFullList( batch: 100, // 每批获取的数量 sort: name, ); print(Total users: ${allUsers.length}); } catch (e) { print(Error fetching all users: $e); }3.3 更新记录 (Update)使用update()方法修改现有记录。以下示例更新用户信息try { final updatedUser await pb.collection(users).update( RECORD_ID, body: { name: John Smith, age: 31, }, ); print(Updated user: ${updatedUser.id}); } catch (e) { print(Error updating user: $e); }RecordService中的update()方法还会自动同步更新AuthStore中的当前用户信息如果更新的是当前认证用户。3.4 删除记录 (Delete)使用delete()方法移除记录try { await pb.collection(users).delete(RECORD_ID); print(User deleted successfully); } catch (e) { print(Error deleting user: $e); }如果删除的是当前认证用户RecordService会自动清除AuthStore中的认证信息。四、高级功能与最佳实践4.1 实时数据订阅PocketBase Dart SDK提供了实时数据订阅功能通过subscribe()方法可以监听集合或特定记录的变化// 订阅整个集合的变化 final unsubscribe await pb.collection(users).subscribe( *, // 通配符表示订阅所有记录 (event) { print(Record ${event.record.id} ${event.action}); // 处理事件创建、更新或删除 }, ); // 使用完毕后取消订阅 // await unsubscribe();4.2 身份验证集成RecordService提供了完整的身份验证功能包括邮箱密码登录、OAuth2认证等// 邮箱密码登录 try { final authData await pb.collection(users).authWithPassword( userexample.com, password123, ); print(Authenticated user: ${authData.record.id}); } catch (e) { print(Authentication failed: $e); }4.3 错误处理最佳实践在进行CRUD操作时建议使用try-catch块捕获可能的异常并根据错误类型进行适当处理try { // 执行CRUD操作 } on ClientException catch (e) { if (e.statusCode 404) { print(Record not found); } else if (e.statusCode 403) { print(Access denied); } else { print(Client error: ${e.message}); } } catch (e) { print(Unexpected error: $e); }五、总结PocketBase Dart SDK提供了简洁而强大的CRUD接口通过BaseCrudService和RecordService等核心类开发者可以轻松实现与PocketBase后端的交互。无论是基本的数据操作还是高级的实时功能SDK都提供了直观的API和完善的错误处理机制。通过本文介绍的方法你可以快速掌握PocketBase Dart SDK的数据操作技巧为你的应用构建高效、可靠的数据管理层。如需了解更多细节请参考SDK源代码中的实现特别是lib/src/services/base_crud_service.dart和lib/src/services/record_service.dart文件。【免费下载链接】dart-sdkPocketBase Dart SDK项目地址: https://gitcode.com/gh_mirrors/da/dart-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考