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