Я думаю, что если я хочу позаботиться о дружеских отношениях, мне нужно добавить коллекцию внутри документа user (users> id> id, email (fields) ... friendsRelationship (collection)> id (пользователи добавлены как)).
Мне хорошо подходит способ хранения пользовательских данных.
Есть ли какое-либо другое решение / лучшая архитектура базы данных, которую можно использовать для дружеских отношений в Firebase? ?
Что касается отношения firends, существует еще одно возможное решение, которое не требует создания вложенной коллекции, вы можете просто добавить каждый идентификатор друга в массив в пользовательском документе. Новая схема может выглядеть так:
Firestore-root
|
--- users
|
--- uid
|
--- email: "name@email.com"
|
--- id: "userId"
|
--- friendIds: ["friendIdOne", "friendIdTwo", "friendIdThree"]
Это будет отлично работать только , если размер документа не достигнет предела. Таким образом, существуют некоторые ограничения в отношении объема данных, которые вы можете поместить в документ. В соответствии с официальной документацией относительно использования и ограничений :
Максимальный размер документа: 1 МБ (1 048 576 байт)
Как вы можете видеть, вы ограничены 1 МБ данных в одном документе. Когда мы говорим о хранении текста, вы можете хранить в значительной степени.
Если вы считаете, что размер документа может превысить это ограничение, тогда ваше решение о сохранении подписчиков как документов в отдельной коллекции решит вашу проблему. проблема.
И добавить это в другой идентификатор документа пользователя user (targetUser) -> двунаправленный.
Чтобы иметь двунаправленное отношение, в решении выше,Вам просто нужно скопировать friendId
в пользовательский массив friendIds
и userId
в массив friendIds
друга.
Когда один пользователь удаляет другого пользователя, мы должны удалить идентификатор вколлекция friendsRelationship от currentUser и targetUser.
В приведенном выше решении необходимо удалить userId из массива friendIds
и friendId
из массива friendIds
пользователя.
Я бы лучше сделал пользователей> id> images (collection)> url, date (fields) ... или images> id (Генерируемый)> fromUser (id), toUserId (collection)> id?
Вы сТакже используйте в этом случае массив для хранения ссылок на изображения. Опять же, если вы считаете, что размер документа может превысить это ограничение, решение о сохранении изображений в виде документов в отдельной коллекции - это решение, которое нужно продолжать.
Как запросить все изображениячто текущий пользователь получил? Как db.collection ("users"). Document (currentUser.uid) ...
Да, получая ссылку на документ пользователя:
db.collection("users").document(currentUser.uid)
И затем читаямассив images
.