# AkSupa 简化API指南 ## 概述 AkSupa 现在采用了**简化的单一方法**设计:只提供 `executeAs()` 方法进行类型安全的数据访问,移除了所有冗余的类型转换方法。 ## 重要变化 ### 🚫 已移除的方法 - `selectAs()` - `insertAs()` - `updateAs()` - `deleteAs()` - `rpcAs()` ### ✅ 统一的方法 - `executeAs()` - 唯一的类型转换方法 ## 设计理念 ### 简洁性原则 - **一个方法解决所有问题**:所有查询操作最终都要调用 `execute()`,`executeAs()` 是其类型安全版本 - **减少API复杂性**:不需要记住多个不同的方法名 - **保持一致性**:无论是查询、插入、更新还是删除,都使用相同的方法 ### 链式友好 ```typescript // 所有操作都遵循相同的模式 const result = await supa .from('table') .operation() // select(), insert(), update(), delete(), rpc() .conditions() // eq(), gt(), like(), etc. .executeAs(); // 统一的类型转换方法 ``` ## 使用示例 ### 查询数据 ```typescript // 多条记录 const users = await supa .from('users') .select('*') .eq('status', 'active') .executeAs(); // 单条记录 const user = await supa .from('users') .select('*') .eq('id', 1) .single() .executeAs(); ``` ### 插入数据 ```typescript const newUser = await supa .from('users') .insert({ name: 'John', email: 'john@example.com' }) .executeAs(); ``` ### 更新数据 ```typescript const updatedUser = await supa .from('users') .update({ name: 'Jane' }) .eq('id', 1) .executeAs(); ``` ### 删除数据 ```typescript const deletedUser = await supa .from('users') .delete() .eq('id', 1) .executeAs(); ``` ### RPC调用 ```typescript const result = await supa .from('any_table') .rpc('my_function', { param1: 'value1' }) .executeAs(); ``` ## 平台兼容性 | 平台 | 类型转换机制 | 说明 | |------|-------------|------| | Android | `UTSJSONObject.parse()` | 真正的类型转换 | | HarmonyOS | `UTSJSONObject.parse()` | 真正的类型转换 | | Web/iOS | `as T` | 类型断言 | ## 从旧版本迁移 ### 旧代码 ```typescript // 旧方式 - 多个方法 const users = await supa.selectAs('users', null, { limit: 10 }); const newUser = await supa.insertAs('users', userData); const updated = await supa.updateAs('users', filter, updateData); ``` ### 新代码 ```typescript // 新方式 - 统一方法 const users = await supa .from('users') .select('*') .limit(10) .executeAs(); const newUser = await supa .from('users') .insert(userData) .executeAs(); const updated = await supa .from('users') .update(updateData) .eq('id', userId) .executeAs(); ``` ## 优势 1. **API简洁**:只需要记住一个方法 2. **类型安全**:TypeScript 编译时检查 3. **平台兼容**:Android/HarmonyOS 使用真正的类型转换 4. **链式友好**:与现有的链式方法无缝集成 5. **维护性强**:单一方法,减少维护成本 ## 注意事项 1. **泛型类型**:确保传入正确的类型参数 `` 2. **错误处理**:检查 `result.error` 和 `result.data` 的有效性 3. **性能考虑**:Android 平台的类型转换有轻微性能开销 4. **调试模式**:开发时会有转换过程的控制台输出 ## 总结 通过采用单一的 `executeAs()` 方法,AkSupa 现在提供了: - 更简洁的API - 更好的类型安全 - 更一致的使用体验 - 更容易维护的代码 这个设计遵循了"简单就是美"的原则,让开发者能够更专注于业务逻辑而不是API的复杂性。