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

AWS Datastore查询已有数据返回undefined问题求助

AWS Datastore查询返回undefined但Amplify Studio可见的排查方案

此前可正常返回数据的Datastore查询突然返回undefined,但Amplify Studio内容板块中能看到对应数据,示例代码如下:

useEffect(() => {
  DataStore.query(Lands, (l) => [
    l.available.eq(false),
    l._deleted.eq(null),
  ]).then(setLands);
  console.log("lands = ", lands);
}, []);

以下是具体排查和解决步骤:

  • 修正异步时序问题:当前代码中console.log在DataStore.query异步操作完成前执行,此时lands还是初始状态(大概率是undefined)。调整代码将日志移至回调内:

    useEffect(() => {
      DataStore.query(Lands, (l) => [
        l.available.eq(false),
        l._deleted.eq(null),
      ]).then(result => {
        setLands(result);
        console.log("lands = ", result);
      });
    }, []);
    
  • 校验查询条件逻辑:

    • 确认available字段类型为布尔值,且Amplify Studio中目标数据的available值确实是false
    • Datastore软删除后_deleted字段为布尔值而非null,建议将过滤条件改为l._deleted.eq(false),或直接省略该条件(Datastore默认不返回已删除数据)
  • 同步本地与云端数据:本地Datastore缓存可能与云端不同步,执行以下操作:

    • 终端运行命令手动同步:
      amplify datastore sync
      
    • 或在代码中主动触发同步后再查询:
      useEffect(() => {
        const fetchData = async () => {
          await DataStore.sync();
          const landsData = await DataStore.query(Lands, l => l.available.eq(false));
          setLands(landsData);
        };
        fetchData();
      }, []);
      
  • 检查依赖版本一致性:确保@aws-amplify/core和@aws-amplify/datastore版本一致,避免版本冲突。运行以下命令查看版本:

    npm list @aws-amplify/core @aws-amplify/datastore
    

    若版本不一致,重新安装依赖:

    npm install @aws-amplify/core@latest @aws-amplify/datastore@latest
    
  • 开启调试日志排查:添加日志输出查看Datastore请求细节,定位问题:

    import { Amplify, Logger } from 'aws-amplify';
    Logger.LOG_LEVEL = 'DEBUG';
    

    查看控制台的Datastore日志,检查请求参数、响应数据及可能的错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:40:23