2015-05-21 6 views
1

У меня возникли проблемы с получением некоторых данных из моей таблицы/объекта Parse с запросом. Я пытаюсь просто сделать запрос, который ищет текущий идентификатор объекта Parse User в столбце «отправитель». Когда этот результат будет возвращен, я хочу извлечь идентификатор объекта получателя из столбца «получателя», связанного с пользователем, которого я искал. Я продолжаю получать 0 результатов, хотя я знаю, что данные есть. Вот мой код:Получение данных из запроса Parse

private List<String> potentialRelationQuery() { 
    mPotentialRelations = new ArrayList<>(); 
    String currentUserId = mCurrentUser.getObjectId(); 
    ParseQuery<ParseObject> query3 = ParseQuery.getQuery("PotentialRelation"); 
    query3.whereEqualTo("sender", currentUserId); 
    query3.findInBackground(new FindCallback<ParseObject>() { 
     @Override 
     public void done(List<ParseObject> parseObjects, ParseException e) { 
      if (e == null) { 
       if (parseObjects.size() > 0) {      
        for (int i = 0; i < parseObjects.size(); i++) { 
         ParseUser receiver = (ParseUser) parseObjects.get(i).get("receiver"); 
         String receiverId = receiver.getObjectId(); 
         mPotentialRelations.add(receiverId); 
        } 
       } 
      } else { 
       Log.d("MyApp", "No matching objects returned from request"); 
      } 
     } 
    }); 
    return mPotentialRelations; 
} 
+0

Я внесла некоторые изменения в код и изменил их выше. Я не мог понять, как опубликовать новый код в окне комментариев ниже ... Я вызываю этот метод из другой части кода и хочу вернуть список массивов, называемый mPotentialRelations. Он по-прежнему ничего не возвращает, поскольку сообщение журнала возвращает «Нет совпадающих объектов ...», хотя данные все еще там ... Справка! –

+0

Мне удалось создать журнал сообщения об ошибке и получил следующее сообщение: error = pointer field "sender" требуется значение указателя. Похоже, может быть, несоответствие типа? –

+0

Проблема решена ... Вместо передачи mCurrentUser.getObjectId(), которая является строкой, я просто изменил запрос на query3.whereEqualTo («sender», mCurrentUser); который является объектом User. Запрос работает отлично сейчас –

ответ

0

Поскольку findInBackground асинхронный вызов Разобрать не возможно, что mPotentialRelations возвращает пустой, поскольку запрос findInBackground еще не завершен до возврата метода potentialRelationQuery? Я знаю, что у меня были проблемы с этим. Поскольку вы не можете возвращать данные из внутреннего класса (т. Е. В сделанном методе FindCallback), запись такого типа метода запросов никогда не работала последовательно для меня.

Смежные вопросы