Amplify DataStore.save无法更新后端数据问题求助
问题
更新ShortId记录时,_version和_lastChangedAt字段正常更新,但short_id字段始终保持原值,未同步传入的新值abcdgedefga。
使用Amplify DataStore的代码如下:
await DataStore.save( ShortID.copyOf(ShortIDRecord, (updated) => { Object.assign(updated, modelFields); }) );
同时尝试直接调用API.graphql执行更新,结果一致,响应示例:
{ "data": { "updateShortID": { "id": "3a83342f-e4f9-4b6b-a91f-d1003277b561", "short_id": "abcdged", "createdAt": "2023-09-16T06:44:48.037Z", "updatedAt": "2023-09-16T06:44:48.037Z", "_version": 2, "_lastChangedAt": 1694846699836, "_deleted": null } } }
排查方向与解决方案
- 检查数据模型定义:确认
short_id字段在GraphQL schema中未添加@readonly指令,只读字段会被后端忽略更新请求,仅触发版本字段变更。 - 验证
modelFields数据有效性:在执行Object.assign前,打印modelFields确认其中包含short_id: "abcdgedefga"的正确键值对,排除数据未正确传入的问题。 - 清除DataStore本地缓存:若本地缓存存在未同步的旧数据,可能导致读取结果异常。可调用
DataStore.clear()清除缓存后重新执行更新操作。 - 检查后端Resolver逻辑:自定义的更新Resolver若存在逻辑错误,会导致
short_id字段未被正确写入。检查AppSync中的Resolver代码,确保更新逻辑正确处理该字段的赋值。
内容的提问来源于stack exchange,提问作者jbl
相关产品推荐
相关产品推荐

