2017-05-26 10 views
4

こんにちは私は、対応するアカウントを持つユーザーのリストを返すために、Facebook IDのリストをパラメーターとして使用してMongoデータベースを照会しようとしています。このメソッドはUnityエディタで正常に動作しますが、iOSで実行するとコンストラクタエラーが発生します(ただし、問題を解決するために空のデフォルトコンストラクタを設定しても動作しません)MongoDBが照会しない

初期メソッド

public void FetchData() 
    { 
     //data = Mongo.Instance.players.FindAll().ToList(); 
     if (FB.IsLoggedIn) 
     { 
      FB.API("me/friends", HttpMethod.GET, FriendsHighscoreHndlr); 
     } 
    } 

コールバックメソッド

public void FriendsHighscoreHndlr (IGraphResult FBresult){    
      var dict = Json.Deserialize(FBresult.ToString()) as Dictionary<string,object>; 
      var friendList = new List<object>(); 
      friendList = (List<object>)(dict["data"]); 

      int _friendCount = friendList.Count; 
      Debug.Log("Found friends on FB, _friendCount ... " +_friendCount); 
      List<string> friendIDsFromFB = new List<string>(); 
      for (int i=0; i<_friendCount; i++) { 
       string friendFBID = getDataValueForKey((Dictionary<string,object>)(friendList[i]), "id"); 
       string friendName = getDataValueForKey((Dictionary<string,object>)(friendList[i]), "name"); 
       Debug.Log(i +"/" +_friendCount +" " +friendFBID +" " +friendName); 
       friendIDsFromFB.Add(friendFBID); 
      } 
      //friendIDsFromFB.Add(AccessToken.CurrentAccessToken.UserId); 
      var query = Query.In("facebookID", BsonArray.Create(friendIDsFromFB)); 
      //Debug.Log(query); 
      data = Mongo.Instance.players.Find(query).ToList(); 
     } 

データ値キーのための方法

private string getDataValueForKey(Dictionary<string, object> dict, string key) { 
      object objectForKey; 
      if (dict.TryGetValue(key, out objectForKey)) { 
       return (string)objectForKey; 
      } else { 
       return ""; 
      } 
     } 

戻るクエリ結果

{ 
    "_id" : ObjectId("XXXXXX"), 
    "facebookID" : "XXXXXXXXXXXXXX", 
    "name" : "John Doe", 
    "highScore" : 40501 
} 
+0

返すと思われるドキュメントを追加できますか?また、 'FBresult'の入力値を加えてください。 – Veeram

+0

@Veeram私は編集を追加しました – Prad

+0

ありがとうございました。フィルタを使用せずにデータベースにクエリを実行し、結果が得られたかどうかを確認してください(データベース/コレクションの正しいクエリであることが確認されます)。上記のコードを実行すると、どのような応答が得られますか?あなたのコードに値を記録すると、正しい 'friendFBID'が表示されますか?正しい入力値 'IGraphResult FBresult'を共有し、' FriendsHighscoreHndlr'メソッドに渡すことができますか? – Veeram

答えて

4

あなたはモンゴの.NETドライバからのフィルタを使用してみましたか?

以下の例のように試してみることをおすすめします。 (注:このイベントは、コレクションとして定義されている定義済みのオブジェクトで発生しています)。

 var filter = Builders<Object>.Filter.Eq(obj => obj.attribute, List<IDs>); 
関連する問題