Лучшая модель данных, использующая Firestore для моего блогового приложения? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю свое первое в истории приложение для блога, использующее flutter, имеющее cloud firestore в качестве бэкэнда, где моя база данных будет включать в себя все мои аутентифицированные данные пользователей, сообщения, лайки и комментарии.

Поскольку я новичок в firestore и flutter, у меня возникли проблемы, и у меня возникли путаницы при принятии решения о том, как следует структурировать мою модель данных для моего блогового приложения.

Я пытался сохранить детали, такие как электронная почта и uid, при аутентификации пользователей, у которых 'users' в качестве родителя collection, в моей базе данных, которая хранит разные documents для каждого конкретного пользователя, который содержит fields из email: и uid:. Проблема в том, что после аутентификации пользователя я позволяю каждому пользователю добавлять description для себя, что будет показано на его странице профиля в моем приложении, но в firestore это значение description добавляется как отдельный document под * 1018. * названный users. Каждый раз, когда создается новая регистрация пользователя, под родительским collection два отдельных documents, один будет иметь два fields для email: и uid:, а другой будет иметь один field с именем about:, который содержит пользователей description.

После аутентификации пользователя, я сохраняю детали пользователя:

 Firestore.instance.collection('/users').add({
      'email': user.email,
      'uid': user.uid,
    }).then((value) {
      Navigator.pop(context);
      Navigator.push(context, MaterialPageRoute(builder: (context) => Desc()));
    }).catchError((e) {
      print(e);
    });

Далее часть описания, пользователи переходят на отдельную страницу, где они могут добавить свое описание и нажатием кнопки данные добавляются в пожарный магазин:

             onPressed: () {
                              if (FirebaseAuth.instance.currentUser() !=
                                  null) {
                                Firestore.instance
                                    .collection('users')
                                    .add({"about": about}).then((value) {
                                  Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                          builder: (context) => HmPg()));
                                }).catchError((e) {
                                  print(e);
                                });
                              } else {
                                return false;
                              }
                            },

Из приведенного выше кода ясно, что я добавляю about непосредственно в родительскую коллекцию, а не в документ под этим. Это потому, что я не знаю, как добавить к конкретному документу в коллекции. Теперь не говорите, чтобы использовать это Firestore.instance.collection('users').document(...document id...).updateData({"about": about}) потому что у меня возникают трудности с доступом к автоматически сгенерированному documentID, который был назначен каждому новому пользователю самим google-cloud-firestore.

Может кто-нибудь предложить мне лучшую модель данных для моего блога, где она должна быть как одна collection отдельно для user details, одна отдельно для posts, которая содержит все посты, загруженные несколькими пользователями, другая отдельная коллекция например, comments, который содержит ссылку или имеет отношение к коллекции posts и коллекции users и даже коллекции posts должен иметь отношение к коллекции users и то же самое для коллекции likes, имеющей отношение к posts и users.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...