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

Amplify Studio删除数据后与本地代码不同步问题求助

AWS Amplify DataStore与控制台删除数据不同步的解决方案

问题根源

DataStore是离线优先的本地缓存+云端同步机制,Amplify控制台直接删除数据属于云端侧的“旁路操作”,不会触发DataStore依赖的AppSync订阅通知,导致本地缓存无法感知数据已被删除,进而查询时返回残留的已删对象。临时解决方法(重拉models、切换导入路径)只是巧合触发了本地缓存清理,但未从根本解决同步逻辑问题。

具体解决方案

1. 强制触发全量同步

在应用初始化或需要同步的时机,主动清除本地缓存并重新拉取云端数据:

import { DataStore } from '@aws-amplify/datastore'; // 保持导入路径统一,不要混合两种方式

// 应用启动时执行,或给用户提供手动同步按钮
const forceFullSync = async () => {
  await DataStore.clear(); // 清空本地缓存
  await DataStore.start(); // 重新启动同步,拉取最新云端数据
};
forceFullSync();

注意:clear()会删除本地所有缓存数据,生产环境建议添加触发条件(如用户主动触发),避免影响离线使用体验。

2. 统一数据操作入口

禁止在Amplify控制台直接执行增删改操作,所有数据操作都通过DataStore API完成:

// 删除数据必须用DataStore.delete,而非控制台手动删除
await DataStore.delete(GameState, { id: 'target-game-id' });

这样DataStore会自动同步本地缓存与云端,不会出现缓存残留。若必须在控制台操作,操作后立即执行上述的全量同步逻辑。

3. 检查模型与配置完整性

  • 确保你的GameState模型包含DataStore同步必需的系统字段:
    type GameState @model @auth(rules: [{ allow: public }]) {
      id: ID!
      # 自定义字段...
      _version: Int!
      _deleted: Boolean
      _lastChangedAt: AWSTimestamp
    }
    
    这些字段是DataStore识别数据变更、处理冲突的核心依据,缺失会导致同步异常。
  • 确认aws-exports.js中的AppSync配置正确,尤其是aws_appsync_graphqlEndpoint和aws_appsync_authenticationType,保证DataStore能正常连接云端接收变更。

4. 统一依赖版本

避免混合使用不同版本的aws-amplify和@aws-amplify/datastore包,版本不一致会导致同步逻辑冲突:

# 查看当前版本
npm list aws-amplify @aws-amplify/datastore

# 安装统一的最新版本
npm install aws-amplify@latest @aws-amplify/datastore@latest

5. 启用日志排查异常

开启DataStore的Debug日志,查看同步过程中的具体错误:

import { Amplify } from 'aws-amplify';
import awsconfig from './aws-exports';

Amplify.configure({
  ...awsconfig,
  DataStore: {
    enableSyncQueries: true,
    logger: console,
    logLevel: 'DEBUG'
  }
});

通过控制台日志可以定位是否存在网络权限、同步订阅失败等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:23:17