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

AWS Amplify DataStore配置syncExpression跳过指定模型同步

结论

你写的这段代码无法实现跳过指定模型同步的需求。

问题原因
  • 按照Amplify DataStore的规则,syncExpression回调返回null时,代表不对对应模型设置任何同步过滤条件,会拉取该模型在云端的全量数据,和你想要排除同步的目标完全相反。
  • 你写的DataStore.configure后调用DataStore.clear()清空本地数据、再调用DataStore.start()重启同步的流程是正确的,配置更新后必须走这个流程才能让新的同步规则生效,问题只出在排除模型的表达式写法上。
修正方案

要完全阻止指定模型和云端同步,需要给对应模型返回一个永远不成立的查询谓词,让云端不会返回任何该模型的数据,即可实现跳过同步的效果。修正后的代码如下:

const userSyncData = async (number) => {
    DataStore.configure({
      syncExpressions: [
        syncExpression(Test, () => {
          return test => test.phoneNumber('eq', number);
        }),
        // 匹配一个永远不存在的id,拉取不到任何数据,等同于跳过该模型同步
        syncExpression(ExternalTest, () => {
          return model => model.id('eq', 'NEVER_SYNC_PLACEHOLDER_ID');
        }),
        syncExpression(EmployeeTestCounter, () => {
          return model => model.id('eq', 'NEVER_SYNC_PLACEHOLDER_ID');
        }),
        syncExpression(EmployeeBarCodes, () => {
          return model => model.id('eq', 'NEVER_SYNC_PLACEHOLDER_ID');
        }),
        syncExpression(TestConsent, () => {
          return model => model.id('eq', 'NEVER_SYNC_PLACEHOLDER_ID');
        }),
      ],
    });
    await DataStore.clear();
    await DataStore.start();
  };
注意事项
  • 不要直接在syncExpression回调里返回false,必须返回符合DataStore谓词语法的查询条件,直接返回布尔值会触发运行时错误。
  • 如果后续需要恢复这几个模型的同步,只需要删除对应模型的syncExpression配置,再重新执行一次clear()+start()流程,即可重新拉取对应模型的全量云端数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:21:15