Два уровня указателей — один запрос parse.com

#android #parse-platform

#Android #синтаксический анализ-платформа

Вопрос:

у меня есть три класса,

 Class A:
--pointer to class B

Class B:
--Pointer to class C

Class C:
--name
  

я хотел бы сделать один запрос к ClassA и получить ClassC.name как я могу это сделать?

я пытался включить ClassA.ClassB, а затем getParseObject для ClassC, но это не удалось.

Комментарии:

1. можете ли вы объяснить «имя» a little..is это java-класс или что-то в этом роде..

2. вы пытались передать его ..?

Ответ №1:

Вам нужно использовать include() метод следующим образом:

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

query.include("pointerToB.pointerToC");

query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> results, ParseException e) {
        for (ParseObject a in results) {
            ParseObject b = a.getParseObject("pointerToB");
            ParseObject c = b.getParseObject("pointerToC");
            String name = c.getString("name");
        }
    }
});
  

Это предполагает, что вызывается столбец класса A pointerToB и вызывается столбец класса B. pointerToC

Ответ №2:

В вашем классе A создайте средство получения для возврата вашего B объекта:

 public B getBobject() {
    return myBobject;
}
  

Затем сделайте то же самое в B классе, чтобы вернуть C объект:

 public C getCobject() {
    return myCobject;
}
  

Наконец, сделайте это, чтобы получить name :

 myAobject.getBobject().getCobject().name
  

Ответ №3:

Вы должны использовать whereMatchesQuery метод с внутренним запросом. Допустим, ваша структура классов выглядит следующим образом:

 class C {
    int id;
}

class B {
    C c;
}

class A {
    B b;
}
  

затем вы должны запросить пользователя как:

 C c = new C();

ParseQuery innerQuery = ParseQuery.getQuery(B.class);
innerQuery.whereEqualTo("c", c);

ParseQuery<A> query = ParseQuery.getQuery(A.class);
query.whereMatchesQuery("b", innerQuery);

query.findInBackground(new FindCallback<A>() {
    @Override
    public void done(List<A> objects, ParseException e) {

    }
});