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 по времени из моего фида.
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
снова.
Примечание. Я знаю, что ВСЕ, было бы намного легче перемещать эти подколлекции понравившихся, фидов и т.д. к arraylists внутри моего пользователя или отправлять документы, но предел документа 1MB, и если это будет расти, то в будущем он рухнет. В другой руке Firestore
не разрешает запросы вложенного документа (пока) или предложение OR
, используя несколько whereEqualTo
.
Я прочитал много сообщений от пользователей, у которых есть проблемы с поиском простого способа сохранить этот вид отношения ID's
, чтобы сделать joins
и queries
в их Collections
, использовать Arraylists
будет удивительный, но предел 1 МБ ограничивает его.
Надеюсь, что кто-то сможет прояснить мой разум или, по крайней мере, научить меня чему-то новому, может быть, моя модель просто дерьмо, и есть простой и простой способ сделать это. Или, может быть, моя модель невозможна для базы данных, отличной от sql.
Спасибо всем за все, славный день.