2016-06-10 1 views
1

Я использую базу данных Firebase с структурой Json для управления комментариями пользователей.База данных Firebase Не равный запрос - Альтернативное решение (для iOS)

{ 
    "post-comments" : { 
      "post-id-1" : { 
       "comment-id-11" : { 
       "author" : "user1", 
       "text" : "Hello world", 
       "uid" : "user-id-2" 
       },.... 
} 

Я хотел бы выслать все комментарии, но не включая текущий пользовательский.

В SQL это будет переведено на: Select * из почтовых комментариев, где ID = «идентификатор пользователя-2»

Я понимаю, что база данных Firebase не предлагает способ исключающих узлов, основанные на! наличие значения (то есть: user id! = ...).

Таким образом, есть альтернативные решения для решения этой проблемы. Либо путем изменения структуры базы данных, может быть, путем обработки источника данных после загрузки данных.

Для последнего я использую FirebaseTableViewDataSource. есть ли способ фильтрации данных после запроса?

Большое спасибо

+0

, пожалуйста, покажите свой текущий код источника данных – Shubhank

ответ

4

Первое решение, чтобы загрузить комментарии через .ChildAdded и игнорировать те, с текущей user_id

let commentsRef = self.myRootRef.childByAppendingPath("comments") 

commentsRef.observeEventType(.ChildAdded, withBlock: { snapshot in 

    let uid = snapshot.value["uid"] as! String 
    if uid != current_uid { 
    //do stuff 
    }    
}) 

Вы могли бы расширить на этом и загрузить все по .Value и итерация над детьми в коде также. Этот метод будет зависеть от того, сколько узлов вы загружаете - .ChildAdded будет меньше использования памяти.

+0

Спасибо, что ответили Джей. Это очень полезно. Могу ли я спросить, что является другим вариантом? – Yacine

+0

@ Yacine Ну, я думал, что у меня может быть другой вариант, но никогда не придумал, поэтому я отредактировал этот комментарий из моего ответа. Повторюсь, если что-нибудь придет ко мне. – Jay

+0

звучит хорошо. Еще раз спасибо! – Yacine