我正在使用 AWS AppSync 通过 Swift 开发 iOS 应用程序。所以我将数据记录到 AWS DynamoDB。
我可以使用 GraphQL 操作「Create~~Mutation」「Update~~Mutation」「Delete~~Mutation」来确认数据的创建、更新、删除。准确地说,从 DynamoDB 控制台中删除的数据消失了,我可以检查一下。好吧,问题是当我查询数据更新时,我只能在更新前查询数据。
// schema.GraphQL
type Todo @model {
id: ID!
name: String!
description: String
}
@IBOutlet weak var idText: UITextField!
@IBOutlet weak var nameText: UITextField!
@IBOutlet weak var desText: UITextField!
@IBAction func Update(_ sender: Any) {
let up = UpdateTodoInput.init(id: idText.text!, name: nameText.text!, description: desText.text)
appSyncClient?.perform(mutation: UpdateTodoMutation(input: up)) { (result, error) in
if let error = error as? AWSAppSyncClientError {
print("Error occurred: \(error.localizedDescription )")
}
if let resultError = result?.errors {
print("Error saving the item on server: \(resultError)")
return
}
print(result?.data?.updateTodo)
}
}
@IBAction func Get(_ sender: Any) {
let get = GetTodoQuery.init(id: idText.text!)
appSyncClient?.fetch(query: get) { (result, error) in
if error != nil {
print(error?.localizedDescription ?? "")
return
}
print(result?.data?.getTodo)
self.did = result?.data?.getTodo
print(self.did)
DispatchQueue.main.async {
self.nameText.text! = result?.data?.getTodo?.name as! String
self.desText.text! = result?.data?.getTodo?.description as! String
}
}
}
〜序言〜</p>
我想更新的属性可以通过输入值来更新「idText」「nameText」「desText」</p>
当我运行时Get(_ sender: Any)
,我可以使用表唯一 ID 从 DynamoDB 获取数据。
并且成功获取数据,「nameText」「desText」,两个UITextFiled.text
属性都发生了变化。
获取数据的name
,description
设置为nameText.text
, desText.text
。
〜序言〜</p>
当我运行Update(_ sender: Any)
到现有数据时。
我可以通过 DynamoDB 控制台确认更新的数据,然后运行Get(_ sender: Any)
到
数据,即获取更新数据!但我只能得到未更新的数据!
例如,创建这个数据↓</p>
CreateTodoInput.init(id: "123", name: "daigo", description: "ichikawa")
我要更新 Created data this byUpdate(_ sender: Any)
idText.text = "123"
nameText.text = "Jack"
desText.text = "Sparo"
UpdateTodoInput.init(id: idText.text!, name: nameText.text!, description: desText.text)
然后我将获取更新的数据Get(_ sender: Any)
idText.text = "123"
GetTodoQuery.init(id: idText.text!)
我只能得到这个
(id: "123", name: "daigo", description: "ichikawa")
但我检查了 AWS DynamoDB 控制台,表示已更新数据。为什么会这样?