2015-01-10 3 views
2

Я пытаюсь получить ребенка, когда у меня есть его родитель. Я создал ребенка (комментарий), родитель (запись) и указатель от ребенка кПолучить ребенка родителя с помощью указателя

между родителями
// Create the post 
    ParseObject myPost = new ParseObject("Post"); 
    myPost.put("title", "I'm Hungry"); 
    myPost.put("content", "Where should we go for lunch?"); 


    // Create the comment 
    ParseObject myComment = new ParseObject("Comment"); 
    myComment.put("content", "Let's do Sushirrito."); 

    // Add a relation between the Post and Comment 
    myComment.put("parent", myPost); 

    // This will save both myPost and myComment 
    myComment.saveInBackground(); 

Мой запрос:

String t=""; 
ParseObject c; 

ParseQuery<ParseObject> query = 
     ParseQuery.getQuery("Comment"); 
     query.whereEqualTo("parent",myPost); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> list,com.parse.ParseException e) { 
       if (e == null) { 
       c= list.get(0); 
       t= c.getString("content"); 
       Toast.makeText(getApplicationContext(), t , Toast.LENGTH_LONG).show();             
       } else { 
        Log.d("NY", "Model.getStudentById Error: " + e.getMessage()); 
        } 

       } 
     }); 

, но я не получил свой комментарий. Я также попытался поставить query.include ("parent"); но это не сработало.

Что мне делать? спасибо

+0

В вашем коде вы никогда не сохраняете 'myPost'. Можете ли вы подтвердить (через Parse Dashboard), что ваш объект «Post» фактически создается? – mbm29414

+0

ParseObject myPost = новый ParseObject ("Post"); myPost.put ("title", "I'm Hungry"); myPost.put («контент», «Куда мы должны пойти на обед?»); - этот код сохраняет объект и создает таблицу в синтаксическом анализе. Я проверил его в своем анализе и посмотрю на него. –

ответ

0

Единственное, что я могу выяснить, это то, что вы можете попытаться извлечь объект myPost из другого метода, прежде чем он фактически будет сохранен в Parse.

Когда я скопировал ваш код в тестовый проект, я не смог заставить его работать. Вот обновленная версия, которую делает работа.

Примечание:Я цепочки операций, так что я уверен, что (ну, так же точно, как я могу быть ... вы все еще нуждаются в хорошей обработки ошибок/исключение), что предыдущая операция завершена до выполняя следующий.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Parse.initialize(this, "<value>", "<value>"); 
    createPost(); 
} 

private void createPost() { 
    ParseObject myPost = new ParseObject("Post"); 
    myPost.put("title", "I'm Hungry"); 
    myPost.put("content", "Where should we go for lunch?"); 

    mPost = myPost; 

    ParseObject myComment = new ParseObject("Comment"); 
    myComment.put("content", "Let's do Sushirrito."); 

    myComment.put("parent", myPost); 

    myComment.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      ParseQuery<ParseObject> query = ParseQuery.getQuery("Comment"); 
      query.whereEqualTo("parent", mPost); 
      query.findInBackground(new FindCallback<ParseObject>() { 
       @Override 
       public void done(List<ParseObject> list, com.parse.ParseException e) { 
        if (e == null) { 
         ParseObject c = list.get(0); 
         String t = c.getString("content"); 
         Toast.makeText(getApplicationContext(), t, Toast.LENGTH_LONG).show(); 
        } else { 
         Log.d("NY", "Model.getStudentById Error: " + e.getMessage()); 
        } 
       } 
      }); 
     } 
    }); 
} 

Код выше показывает мой «Hello World» активность, а затем отправляет Тост, который говорит: «Давайте сделаем Sushirrito.»

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