質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

1391閲覧

iOS Swift AppSync DynamoDB クエリ

daigakuse-

総合スコア67

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/12/17 10:41

編集2019/12/18 22:53

Swiftを用いてAppSyncを使用した学習をしています。

appsyncの公式サイトを真似てデータをmutation,queryするところまではできたのですが、途中でqueryがうまく動作しなくなりました。
テーブルにデータが何も存在しないはずなのに、idを指定してgettodoすると一度mutationしたことあるデータ(現在は削除しているはず)が取得できてしまいます。
何か解放しなくてはいけないものがあるのでしょうか。
デバイス別にシミュレーションしてみるとそのデバイスでのmutationしかqueryできなかったのですが、、、

appSyncClientをAWSCognitoUserPoolsAuthProviderAsyncで生成しているため、これが原因でappsyncClientのmutationしかqueryできないのでしょうか?

下記のコードの内容は、サインインが成功した場合、idが"NUM"のデータをquery。
取得結果がnilの場合は"NIL",
取得データが存在する場合は中身を表示というものになっています。

WEBでデータを確認したスクショ

swift

1let databaseURL = URL(fileURLWithPath:NSTemporaryDirectory()).appendingPathComponent("database_name") 2 do { 3 // Initialize the AWS AppSync configuration 4 let appSyncServiceConfig = try AWSAppSyncServiceConfig() 5 6 let appSyncConfig = try AWSAppSyncClientConfiguration(appSyncServiceConfig: appSyncServiceConfig, 7 userPoolsAuthProvider: { 8 class MyCognitoUserPoolsAuthProvider : AWSCognitoUserPoolsAuthProviderAsync { 9 func getLatestAuthToken(_ callback: @escaping (String?, Error?) -> Void) { 10 AWSMobileClient.sharedInstance().getTokens { (tokens, error) in 11 if error != nil { 12 callback(nil, error) 13 } else { 14 callback(tokens?.idToken?.tokenString, nil) 15 } 16 } 17 } 18 } 19 return MyCognitoUserPoolsAuthProvider()}(), 20 databaseURL:databaseURL) 21 22 // Initialize the AWS AppSync client 23 appSyncClient = try AWSAppSyncClient(appSyncConfig: appSyncConfig) 24 } catch { 25 print("Error initializing appsync client. (error)") 26 }

swift

1var appSyncClient: AWSAppSyncClient? 2let appDelegate = UIApplication.shared.delegate as! AppDelegate 3 4var approval_NUM:Int! 5override func viewDidLoad() { 6 super.viewDidLoad() 7 8 appSyncClient = appDelegate.appSyncClient 9 10 AWSMobileClient.sharedInstance().initialize { (userState, error) in 11 if let userState = userState { 12 switch(userState){ 13 case .signedIn: 14 DispatchQueue.main.async { 15 print("Sign In") 16 } 17 self.appSyncClient?.fetch(query: GetTodoQuery(id:"NUM")) {(result, error) in 18             if error != nil { 19 print(error?.localizedDescription ?? "") 20 } 21 22 if (result?.data?.getTodo?.id) != nil { 23                print("A") 24 print(result?.data?.getTodo?.snapshot) 25 }else{ 26 print("NIL") 27 } 28 } 29 30 31 case .signedOut: 32 AWSMobileClient.sharedInstance().showSignIn(navigationController: self.navigationController!, { (userState, error) in 33 if(error == nil){ //Successful signin 34 DispatchQueue.main.async { 35 print("Sign Out") 36 } 37 } 38 }) 39 default: 40 AWSMobileClient.sharedInstance().signOut() 41 } 42 } else if let error = error { 43 print(error.localizedDescription) 44 } 45 } 46 47 }

このプログラムを実行した際の結果は下記の通りです。

Sign In

A
Optional(["name": Optional("Use AppSync"), "__typename": Optional("Todo"), "description": Optional("0"), "id": Optional("NUM")])

なぜ値が取得できてしまうのでしょうか。

アドバイスいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問