#reactjs #firebase
#reactjs #firebase
Вопрос:
Пользователь взаимодействует с отдельным элементом в массиве, я отмечаю его как видимый и не показываю его пользователю
Каков наилучший способ реализовать это для нескольких пользователей? Это кажется довольно простым для одного пользователя, где вы можете просто изменить массив, чтобы иметь логическое значение seen, а затем просто отфильтровать его, но когда у вас несколько пользователей, каков наилучший способ справиться с этим?
Должен ли я создать отдельный файл «elementsMarkedAsSeen» для каждого пользователя? а затем отфильтровать ее оттуда? Должен ли я хранить элементы в массиве, который видел пользователь? или элементы, которые пользователь не видел? Что произойдет, если массив элементов изменится?
Я просто ищу объяснение наилучшей практики высокого уровня, которое позже не доставит мне проблем. Оттуда я проведу собственное исследование.
Комментарии:
1. Это действительно зависит от нескольких вещей. Каков средний и верхний предел пользователей, которые видят элемент? Возможно, вам лучше всего использовать таблицу «ItemSeenEvent», в которой хранятся идентификатор элемента, идентификатор пользователя и временная метка. затем вы можете использовать пользователей, элементы и просмотренные события.
Ответ №1:
Наиболее распространенный подход заключается в сохранении одного значения для каждого пользователя, которое идентифицирует самое последнее сообщение, которое они видели, и предполагает, что они видели все сообщения до этого. Таким образом, это может быть либо временная метка этого сообщения, его идентификатор, либо что-либо еще, что вы можете использовать для идентификации сообщения.
Если ваши пользователи могут читать сообщения не по порядку, и вы хотите отслеживать просмотр каждого отдельного сообщения, у вас есть два варианта:
- Сохраните UID каждого пользователя, который видел сообщение в этом сообщении или под ним.
- Сохраняйте идентификатор каждого сообщения, которое пользователь видел у этого пользователя или под ним.
Комментарии:
1. Я не думаю, что это хороший ответ, потому что вы начинаете с предположения, которое кажется не относящимся к вопросу (упорядоченный канал). Вы также сводите ее к двум вариантам, когда есть третий и довольно распространенный вариант, опущенный: наличие четной таблицы не под пользователем или элементом, в которой хранится запись из двух вместе, как я упоминал в своем комментарии. Затем к ней можно присоединиться любым способом, что дает гибкость для оптимизации запросов, а также предотвращает рост больших массивов отдельных записей.
2. Если у вас есть лучшее решение, которое, по вашему мнению, применимо здесь, пожалуйста, опубликуйте его в качестве альтернативного ответа.