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
相关产品推荐
相关产品推荐

