Как запросить значение столбца, которое задано как указатель на другую таблицу в Parse

Я использую Parse для своего приложения. Я хочу запросить таблицу со столбцом, который установлен как указатель на другую таблицу. Вот запрос:

ParseQuery query = new ParseQuery("CategoryAttribute");
        query.whereEqualTo("categoryId", categoryId);
        query.findInBackground(new FindCallback() {
            @Override
            public void done(List<ParseObject> categoryAttributes, ParseException e) {
                if (e == null) {
                    for (int i = 0; i < categoryAttributes.size(); i++){
                        String atributeCategoryId = categoryAttributes.get(i).getString("categoryId");
                        String attributeKey  = categoryAttributes.get(i).getString("attributeKey");
                        String attributeValue   = categoryAttributes.get(i).getString("attributeValue");

                        setCategoryAtributeRow(atributeCategoryId, attributeKey, attributeValue);
                    }
                } else {
                    Log.d("score", "Error: " + e.getMessage());
                }
            }
        });

Итак, столбец categoryId является указателем на другую таблицу. Другие столбцы работают нормально. Я попытался отсканировать API и руководства, но не смог найти нужное решение. Помощь будет очень признательна!

Ответ 1

Вот решение этого: сначала вам нужно создать ParseObject из типа вашей таблицы:

ParseObject sale = ParseObject.createParseObject("Sale"); 

тогда вам нужно получить ParseObject из результата:

sale = result.getParseObject(pointer_field);

Теперь вы можете вытащить из sale любое поле, которое оно имеет, как вы это делали, например:

sale.getString("some_field")

Примечание: Когда вы выполняете свой запрос, вы должны включить поле указателя, если хотите получить данные из него после того, как запрос будет возвращен. Результат:

query.include("pointer_filed")

Надеюсь, что это поможет

Ответ 2

@Akshat Agarwal, вот пример в JavaScript:

var parseObj = Parse.Object.extend('parseObj');

new Parse.Query(parseObj)
  .include('pointerField')
  .find(function (data) {
    data.get('pointerField').get('fieldName');
  });

Ответ 3

Для iOS

  PFQuery *parseQuery = [PFQuery queryWithClassName:@"MyClass"];
  [parseQuery whereKey:@"categoryId" equalTo:categoryId];
  [parseQuery includeKey:@"pinter_field"];
  [parseQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
  //
  }];