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

Flutter使用AWS Amplify DataStore如何获取关联关系中的数据

问题根因

AWS Amplify DataStore 默认采用懒加载策略加载关联模型,查询Profile时仅会填充关联Type对象的ID字段作为占位,其余字段不会主动拉取,因此会出现可正常读取profile.type.id但name、langCode为空的情况。

解决方案

方案1:查询时预加载关联模型

调用DataStore.query查询Profile时,通过includes参数指定需要预加载的关联字段,即可一次性拿到完整的Type数据:

// 修改查询逻辑,添加includes参数
final List<Profile> profiles = await DataStore.query(
  Profile.classType,
  // 声明预加载type关联字段
  includes: [Profile.type],
);

用该方法查询得到的Profile实例可直接读取profile.type.name、profile.type.langCode,原有业务渲染代码无需修改。

方案2:手动触发懒加载

如果已经拿到未预加载关联数据的Profile实例,可单独调用关联对象的load方法拉取完整数据:

// 单个Profile实例加载关联Type的完整数据
final Type? fullType = await profile.type.load();
if (fullType != null) {
  print(fullType.name);
  print(fullType.langCode);
}
排查建议

如果按上述方案操作后仍有问题,先执行amplify codegen models重新生成最新的模型代码,避免schema修改后未同步更新本地模型导致的字段缺失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:00