@Rijo, можете ли вы сказать, что этот метод рекомендован Google?
но я переместил свою модель данных из Firebase в Firestore. Весь мой код работает, но у меня возникли неприятные проблемы с вложенными запросами для получения некоторых данных. Вот в чем суть:
Прямо сейчас моя модель данных для этой части выглядит следующим образом (Да! Еще один последователь / пример фида):
{
"Users": { //Collection
"UserId1" : { //Document
"Feed" : { //Subcollection of Id of posts from users this user Follow
"PostId1" : { //Document
"timeStamp" : "SomeDate"
},
"PostId2" : {
"timeStamp" : "SomeDate"
},
"PostId3" : {
"timeStamp" : "SomeDate"
}
}
//Some data
}
},
"Posts":{ //Collection
"PostId1":{ //Document
"Comments" :{ //Subcollection
"commentId" : { //Document
"authorId": "UserId1"
//comentsData
}
},
"Likes" : { //Subcollection
"UserId1" : { //Document
"liked" : true
}
}
}
}
}
Моя проблема заключается в том, что для получения сообщений из ленты пользователя я должен запросить следующим образом:
Получить последние X документов для заказа по timeStamp из моего каналаfeedCol(userId).orderBy(CREATION_DATE, Query.Direction.DESCENDING).limit(limit)
После этого я должен сделать один запрос для каждого сообщения, извлеченного из списка:workoutPostCol.document(postId)
Теперь у меня есть данные каждого поста, но я хочу снять имя пользователя, картинку, очки и т. Д. Автора, который находится в другомDocument
Итак, снова я должен сделать еще один запрос для каждогоauthorId
восстановлено в списке постовuserSocial(userId).document(toId)
Наконец, что не менее важно, мне нужно знать, понравился ли мой текущий пользователь этот пост, поэтому мне нужно сделать один запрос для каждого поста (снова) и проверить, находится ли мой userId внутриposts/likes/{userId}
Сейчас все работает, но думаю, что ценаFirestore
зависит от количества обращений к базе данных, а также от того, что это не делает мои запросы более простыми, я не знаю, просто ли моя модель данных не подходит для такой базы данных, и я должен перейти к нормальной работеSQL
или просто вернуться кFirebase
очередной раз.
ЗаписьЯ знаю, что ВСЕ, было бы намного проще перенести эти подколлекции лайков, фидов и т. Д. В списки авторов внутри моего пользователя или публикации документов, но предел документа1MB и если это сильно вырастет, то в будущем оно рухнет. В другой рукеFirestore
не разрешает запросы субдокументов (пока) илиOR
предложение с использованием несколькихwhereEqualTo
.
Я прочитал много сообщений от пользователей, которые испытывают проблемы с поиском простого способа хранения такого родаID's
отношения, чтобы сделатьjoins
а такжеqueries
в ихCollections
использоватьArraylists
было бы здорово, но ограничение в 1 МБ ограничило бы это сильно.
Надеюсь, что кто-то сможет прояснить это или хотя бы научить меня чему-то новому; Может быть, моя модель просто дерьмо, и есть простой и легкий способ сделать это? Или, может быть, моя модель не подходит для базы данных не из SQL.