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

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

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

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

987閲覧

Unity,ニフクラ:objectIdのListで複数のデータ検索

Linkins

総合スコア82

mBaaS

mBaaSとはモバイルアプリケーションでの利用に特化したBaaSです。スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供しています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/03/10 07:05

編集2019/03/12 10:08

UnityとNCMBでアプリを開発しています。

複数のobjectIdを記録しているListを用いて、そのList内のobjectIdと一致するデータをデータストア内から複数検索・取得したいです。
そこで下記のコードを書いたのですが、
【StatusCode】:403
【Error】:NCMB.NCMBException: Unauthorized operations for signature.
【ResponseData】:
というエラーが出てしまいます。
下記のコードがどこか間違えているのでしょうか?
あるいは、下記コードとは別の方法で上記の実装ができるのであればご教授願います。

・試したこと

C#

1NCMBQuery<NCMBObject> q=new NCMBQuery<NCMBObject>("Hoge"); 2 3q.WhereContainedIn("objectId",IDList);//IDListは複数のobjectIdを記録しているList 4 5q.FindAsync((List<NCMBObject> objs, NCMBException e) => 6 { 7 if (e == null) 8 { 9 Debug.Log("DL"); 10 } 11 12 });

質問内容とは別の実装内で使用しているクエリ検索(whereContainedInを含んでいない)は問題なく動いており、
またWhereContainedIn()の引数を”objectId”から他のフィールドに変えてもエラーが出るため、WhereContainedIn()自体に原因があるのではと思っています。

Listの長さ分、上記の処理を繰り返すことで希望の実装はできましたが、APIの使用回数を減らすためにこの方法はできれば使いたくありません。

回答よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

NCMBQuery と WhereContainedIn で目的のことができるのではないかと思います。

データストア (Unity) : 基本的な使い方 | ニフクラ mobile backend

基本的な検索の利用

mobile backend上に保存されているデータを検索する場合には、NCMBQueryクラスを利用します。

csharp

1//QueryTestを検索するクラスを作成 2NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest"); 3//Scoreの値が7と一致するオブジェクト検索 4query.WhereEqualTo ("Score", 7); 5query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => { 6 if (e != null) { 7 //検索失敗時の処理 8 } else { 9 //Scoreが7のオブジェクトを出力 10 foreach (NCMBObject obj in objList) { 11 Debug.Log ("objectId:" + obj.ObjectId); 12 } 13 } 14}); 15

検索条件に複数の値を配列形式で設定し、

そのうちのいずれかと一致するオブジェクトを検索することができます。

csharp

1List<int> request = new List<int> { 1, 5, 10}; 2 3//1,5,10のいずれかと一致するオブジェクトを検索 4query.WhereContainedIn("Score",request);

投稿2019/03/11 22:47

karin

総合スコア128

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

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

Linkins

2019/03/12 10:09

申し訳ないです!質問の情報不足でした。 質問内容を変更いたしました。 回答ありがとうございます。
karin

2019/03/12 11:27

エラーになるんですね。 NCMB SDK のバージョンは幾つでしょうか? https://github.com/NIFCloud-mbaas/ncmb_unity/releases v3.2.2やv3.1.1でシグネチャの不具合修正もあるようなので、それ以前のバージョンだったらv4.0.0にアップグレードしてみるとどうでしょうか
Linkins

2019/03/17 14:46

返信遅れて申し訳ないです。 SDKはv4.0.0です。 karinさんのご指摘を参考に、以前のバージョンに戻してもみたのですが、やはり同じエラーが出てしまいました。
karin

2019/03/19 23:54

そうなのですね。サポートとかにお問い合わせしてみるのが良いのではないでしょうか...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問