@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.

Ответы на вопрос(1)

Ваш ответ на вопрос