2017-02-18 8 views
0

Каков правильный способ запроса для каждого комментария (POJO), прикрепленного к фото (POJO) в Android. В Firebase, у меня есть следующая структура коллекции фото:Firebase - Запрос от FirebaseListAdapter в Android

"photos" : { 
    "-KaeuYf9jXcy4oqpRqbi" : {f 
     "entities" : { 
     "type" : { 
      "image" : { 
      "bucket" : "bucket", 
      "prefix" : "https://s3-us-west-2.amazonaws.com/", 
      "suffix" : "image.jpg" 
      } 
     } 
     }, 
     "stats" : { 
     "liked" : 0 
     }, 
     "text" : "Person Detected!", 
     "timestamp" : 1484631194257 
    } 
} 

и комментарии коллекции:

"comments" : { 
    "-KdE6Hwua8d6sBQimPos" : { 
     "attachphoto" : { 
     "-KaeuYf9jXcy4oqpRqbi" : true 
     }, 
     "attachuser" : { 
     "-KaeuYHjkdf9okflslf" : true 
     }, 
     "displayName" : "Gary", 
     "text" : "ok", 
     "timestamp" : 1487385995844 
    }, 
    "-KdE6IPc-NL-6zGkwXq3" : { 
    "attachphoto" : { 
     "-KaeuYf9jXcy4oqpRqbi" : true 
     }, 
     "attachuser" : { 
     "-KaeuYHjkdf9okflslf" : true 
     }, 
     "displayName" : "Thomas", 
     "text" : "ok", 
     "timestamp" : 1487385997735 
    } 
} 

В Android я использую FirebaseAdapter, но у меня возникли проблемы, образующую надлежащего запроса который будет получать только комментарии, прикрепленные к определенной фотографии. У меня есть ключ Фото

FirebaseListAdapter adapter = new CommentAdapter(this, Comment.class, R.layout.item_comment, QUERY){ 
      @Override 
      protected void populateView(View v, Comment model, int position) { 
       if(model.getDisplayName()!=null) { 
        String[] name = model.getDisplayName().split(" "); 
        ((TextView) v.findViewById(R.id.id)).setText(name[0]); 
       } 
       ((TextView) v.findViewById(R.id.content)).setText(model.getText()); 
      } 
     }; 

Я думал, что я мог определить что-то вроде:

final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
final DatabaseReference commentsRef = database.getReference("comments"); 
Query query = commentsRef.orderByChild("attachphoto").equalTo() 

Но у меня возникают некоторые разъединение о том, как закончить это. Первый проект с использованием Firebase, поэтому любая помощь/советы были бы высоко оценены!

+1

Похоже, вы пытаетесь поместить комментарии в категории. См. Http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –

+0

Спасибо, что сработал! StringBuilder child = new StringBuilder ("attachphoto /"); child.append (imageKey); Запрос запроса = commentsRef.orderByChild (child.toString()). EqualTo (Boolean.TRUE); – gareoke

ответ

0

Firebase - это скорее noSQL, поэтому существуют ограничения, над которыми приходится работать ... особенно при разработке структуры данных. например, в этом случае может иметь смысл добавить идентификаторы связанных пользователей & комментариев (или даже связанных комментариев вообще) во вложенный узел структуры, представляющий фотографию. есть другие способы добраться туда - хотя всегда нужно рассмотреть, как искать детали позже (потому что структура диктует, какие запросы возможны, а какие нет).

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