kuhle
kuhle

Reputation: 193

ANDing, nested queries parse server android

I am trying to get a user or users who have a certain age, from a certain city and with certain genders fro ma parse server, but this code returns all users with age= "20", city= "new york", gender= "females"

public void sendQuery() {
        String ages1 = SharedPrefsActivity.n;
        String cities = SharedPrefsActivity.ph;
        String genders = SharedPrefsActivity.e;
        ParseQuery<ParseObject> ages =ParseQuery.getQuery("UserImages");
        ages.whereEqualTo("age", ages1 );

         ParseQuery<ParseObject> city1 = ParseQuery.getQuery("UserImages");
         city1.whereMatchesKeyInQuery("city", cities , ages);

         final ParseQuery<ParseObject> gender1 = ParseQuery.getQuery("UserImages");
         gender1.whereMatchesKeyInQuery("gender", genders, city1);

         gender1.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> results, ParseException e) {
                for (ParseObject gender : results) {
                    Object name = gender.get("name");
                    ParseFile image = (ParseFile) gender.get("ImageFile");
                    Usernames.add(((Object) name).toString());
                    imageUrls.add(((ParseFile) image).getUrl().toString());

                }

            }
        });

    }

Upvotes: 1

Views: 302

Answers (1)

danh
danh

Reputation: 62686

AND is accomplished by applying multiple criteria to a single query:

ParseQuery<ParseObject> query =ParseQuery.getQuery("UserImages");

query.whereEqualTo("age", ages1 );
query.whereEqualTo("city", cities );
query.whereEqualTo("gender", genders );

query.findInBackground( ...

Upvotes: 1

Related Questions