【发布时间】:2024-04-19 15:20:01
【问题描述】:
我正在使用 AWS AppSync 进行离线/在线功能的移动开发 (iOS)
我正在尝试以离线模式保存数据。但我收到错误“未提供变量 id/缺少值”
当应用上线时,它会自动同步到 DynamoDB,但问题只是在离线模式下无法获取已保存的记录
这是应用程序中使用的代码
`
let userObjInput = userObjectInput(id: "id", firstName: "firstname", lastName: "lastName")
let CategoryInputs = CreateUserCategoryInput(categoryName: "categoryValue" , user: userObjInput)
let mutation = CategoryMutation(input: CategoryInputs)
appSyncClient?.perform(mutation: mutation, queue: .main, optimisticUpdate: { (transaction) in
do {
let selectionSets = try transaction?.read(query: query)
try transaction?.update(query: GetUserCategoriesOfUserQuery(id: "id")) { (data: inout GetUserCategoriesOfUserQuery.Data) in
data.getAllCategoriesForUser?.append(GetUserCategoriesOfUserQuery.Data.GetAllCategoriesForUser?.init(GetUserCategoriesOfUserQuery.Data.GetAllCategoriesForUser.init(id: (UUID().uuidString), categoryName: CategoryInputs.categoryName!, isDeleted: false, user: GetUserCategoriesOfUserQuery.Data.GetAllCategoriesForUser.User?.init(GetUserCategoriesOfUserQuery.Data.GetAllCategoriesForUser.User.init(id: userObjInput.id!, firstName: userObjInput.firstName!, lastName: userObjInput.lastName!)))))
} catch {
print(error.localizedDescription)
}
}, conflictResolutionBlock: nil, resultHandler: { (result, error) in
if error == nil {
fetchCategories()
} else {
print(error?.localizedDescription)
}
})`
【问题讨论】:
-
你是如何初始化你的 appsync 配置的?您是否使用“id”作为缓存键?示例应用程序中提到的乐观写法:github.com/aws-samples/aws-mobile-appsync-events-starter-ios/… 是否适合您?您可以为您的用例遵循类似的模式吗?
-
我遵循相同的模式并使用 id 作为缓存。 aws sdk 的问题是,如果我们在 get 查询中使用参数,它将无法获取记录。我发布了问题和示例以支持 2 个月前。他们仍在调查这个问题。
-
您找到解决方案了吗?我想我也有同样的问题。
-
AWS 支持没有响应。我正在获取所有记录并应用过滤器
-
这个错误已经在 iOS AppSync SDK
2.6.22的新版本中修复了
标签: swift offline aws-appsync