Firebase: повторить имя пользователя в коллекции сообщений или я должен использовать идентификатор? - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в использовании firebase и не sql.

У меня есть коллекция ПОЛЬЗОВАТЕЛЕЙ со многими пользователями. Коллекция пользователей выглядит следующим образом:

users
  |
  ---- -MOFidfjdUSJFDJ (the user unique ID)
          |
          ----- username: josh (username)
          |
          ----- email: j@j.com
          |
          ----- name: josh ss s

И каждый пользователь может создавать сообщения:

Posts
  |
  ---- -Mjfhdidfdufduf (the post id)
           |
           ------ username: (SHOULD I USE JOSH OR THE USER KEY -MOFidfjdUSJFDJ?)
           |
           ------ postText: text user enter
           |
           ------ profileIMG: (repeate the profile collection img or use the key?)

Так что в сообщениях у меня должно быть username, text пользователя и его profile image (из коллекции).

Проблема в том, что пользователь может изменить свой username, если он хочет, и может изменить свой profile picture. Если я использую идентификатор, я только обновляю имя пользователя в пользователях. Но если я повторяю имя пользователя в каждом сообщении, и у пользователя есть около 1000 сообщений, я должен обновить его имя пользователя во всех этих сообщениях.

Мой вопрос: следует ли мне использовать идентификаторы из другой коллекции или повторять пользователя и профиль IMG в каждом сообщении?

Если мне нужно повторить действия пользователя, например, josh и profileIMG /images/josh.jpg, как я могу обновлять все сразу, используя Firebase?

Большое спасибо.

1 Ответ

1 голос
/ 21 апреля 2020

В Posts используйте следующее:

Posts
  |
  ---- -Mjfhdidfdufduf (the post id)
           |
           ------ userId: userID_value
           |
           ------ postText: text user enter

используйте userID в качестве значения userId. Таким образом, когда вы пишете сообщение и хотите получить информацию о пользователе, вы можете просто прочитать документ, связанный с этим пользователем, в разделе users.

Если вы обновите username и profileImg, тогда вам нужно обновлять только в одном месте, таким образом делая одно чтение.


Итак, в основном:

  1. если у пользователя 1000 сообщений
  2. пользователь обновил его изображение профиля и имя пользователя
  3. Вы обновите только пользовательский документ внутри коллекции пользователей
  4. Если вы войдете на страницу, которая будет содержать список сообщений для этого пользователя, она получит новое имя пользователя и изображение профиля.

Теперь, если в вашем приложении есть список сообщений всех пользователей, тогда будет проще иметь username, profileImg и postText под каждый документ в коллекции Posts. Затем вам нужно обновить все сообщения пользователя, но вы должны принять во внимание, что пользователи не будут обновлять изображение профиля или имя пользователя ежедневно.

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