You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WatermelonDB同步报错:Cannot read property '_resetCount' of undefined

解决WatermelonDB同步报错"Cannot read property '_resetCount' of undefined"

这个错误的核心原因是你不需要手动在自定义表中添加_resetCount字段——这是WatermelonDB内部_syncStatus系统表的专属字段,用户自定义表完全不需要处理它。同步还没发起请求就报错,说明本地数据库初始化或同步依赖的内部状态存在问题,按以下步骤排查:

1. 移除自定义表和模型中的_resetCount代码

先把你手动添加的相关代码全部删掉:

  • 从requests表的schema中移除{ name: '_resetCount', type: 'number' }
  • 从Request模型中移除@field('_resetCount') resetCount;

2. 验证数据库实例初始化是否正确

确保传入synchronize的database是完全初始化且配置正确的实例,比如你的数据库初始化代码应该类似这样:

import { Database } from '@nozbe/watermelondb';
import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
import yourSchema from './path/to/your/schema';
import Request from './models/Request';
// 导入其他所有自定义模型

const adapter = new SQLiteAdapter({
  schema: yourSchema,
  dbName: 'your_app_db', // 你的数据库名称
  // React Native 下如果有迁移逻辑,需添加对应配置
});

const database = new Database({
  adapter,
  modelClasses: [Request], // 必须包含所有自定义模型
  actionsEnabled: true,
});

export default database;

检查点:

  • 所有自定义模型都已注册到modelClasses数组中
  • adapter的schema参数正确指向你的完整schema(包含所有自定义表)
  • 确保在调用synchronize前,数据库已经完成初始化(比如React Native中不要在组件挂载前过早调用同步)

3. 核对同步配置与schema版本

确保synchronize中的migrationsEnabledAtVersion值不大于你的schema版本:

  • 如果你的schema版本是1,那migrationsEnabledAtVersion: 1是正确的
  • 后续升级schema版本时,需要同步调整这个值,同时确保迁移逻辑正确

4. 重置本地数据库

之前的错误操作可能导致数据库结构损坏,完全重置后再测试:

  • React Native:卸载重装应用,或者通过adb/iOS模拟器删除数据库文件
  • Web:清除浏览器本地存储(IndexedDB)

完成以上步骤后重新调用同步函数,应该就能解决这个初始化阶段的报错。

内容的提问来源于stack exchange,提问作者Protonos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:05:21