如何为WatermelonDB同步函数传递数据及解释migrationsEnabledAtVersion
WatermelonDB 同步功能使用说明
1. pullChanges、pushChanges 参数传递逻辑
你无需手动给这两个回调传参,所有入参都是 synchronize 方法从你传入的已初始化database实例里自动读取注入的,你只需要在回调里接收参数处理和后端的交互即可。
各参数具体含义:
- pullChanges 自动注入的入参
lastPulledAt:本地库记录的上次同步成功的时间戳,首次同步时为0,代表全量拉取所有数据schemaVersion:你项目中声明的WatermelonDB数据库schema版本号migration:框架自动生成的迁移相关数据,用于服务端适配不同版本的客户端数据格式
你需要将这三个参数传给后端拉取接口,后端返回符合规范的{ changes, timestamp }结构后直接return即可:changes是服务端在上次同步后产生的所有新增、修改、删除数据,timestamp是本次同步的服务端时间戳。框架收到返回值后会自动把变更写入本地库,同时更新本地的lastPulledAt记录。
- pushChanges 自动注入的入参
changes:框架自动采集的上次同步之后本地产生的所有数据变更,格式已经符合WatermelonDB同步规范,直接序列化后传给后端即可lastPulledAt:本地记录的上次同步时间,用于后端做并发冲突校验
同步触发方式
确保传入synchronize的database实例已经完成初始化,直接调用await mySync()就可以执行完整的推拉同步流程,不需要额外传任何参数。
2. migrationsEnabledAtVersion 配置含义
该配置用于开启同步流程中的迁移适配能力,配置值为你的服务端首次支持同步迁移功能的schema版本号。
当客户端的数据库schema版本大于等于这个配置值时,同步过程会自动携带迁移相关参数给服务端,方便服务端兼容不同版本的客户端数据格式。如果你的服务端还没有做过迁移适配,直接把这个值设置为和当前项目的schema版本一致即可。
内容的提问来源于stack exchange,提问作者Seun Akindele
相关产品推荐
相关产品推荐

