Запись данных обновлена, удалена до AWS DynamoDB через AWS AppSyn c есть проблемы? - PullRequest
0 голосов
/ 21 апреля 2020

Я использую AWS AppSyn c для разработки iOS Приложение от Swift. И поэтому я записываю Данные в AWS DynamoDB.
Я могу использовать GraphQL Operarion 「Создать ~~ Мутацию「 「Обновить ~~ Мутацию「 「Удалить ~~ Мутацию」, чтобы я мог подтвердить создание, обновление, удаление данных. Если быть точным, удаленные данные исчезли из консоли 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
            }

        }


    }

reampreamble〜

Свойства, которые я хочу обновить, можно обновить, введя значение 「idText「 「nameText」 「desText」

когда я запускаю Get(_ sender: Any), я могу получить данные из DynamoDB с помощью таблицы UNIQUE ID.

и добиться успеха в получении данных, 「nameText」 「 desText 」, оба свойства UITextFiled.text изменяются.

Получение данных name, description установлено на nameText.text, desText.text.

〜preamble〜

когда я запускаю Update(_ sender: Any) для существующих данных.

Я могу подтвердить обновленные данные с помощью консоли DynamoDB, затем я запускаю Get(_ sender: Any) для данных

, то есть для получения данных ОБНОВЛЕНИЯ! но я могу только получить ОБНОВЛЕННЫЕ данные!

, например, Создать эти данные ↓

CreateTodoInput.init(id: "123", name: "daigo", description: "ichikawa")

И я собираюсь обновить Созданные данные это Update(_ 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 Console, Обновленные данные представлены. почему это случилось?

1 Ответ

0 голосов
/ 22 апреля 2020

Я понял!

Вы не должны забывать этот аргумент!

cachePolicy: .returnCacheDataAndFetch

Вы можете получить обновленные данные, следуя этому коду!

appSyncClient?.fetch(query: post, cachePolicy: .returnCacheDataAndFetch)  { (result, error) in
if error != nil {
print(error?.localizedDescription ?? "")
return
}
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...