Обнаружение Изменений Firebase В Реальном Времени Для Конкретного Пользователя

# #javascript #reactjs #firebase #firebase-realtime-database

Вопрос:

Я использую базу данных firebase в реальном времени. У меня есть куча пользователей в моей ссылке

 let usersRef = db.ref('/users/);
 

Затем я хочу обнаружить любые изменения здесь с помощью

    usersRef.on('value', (snapshot) => {}
 

Это обнаружит изменение, но вернет всех пользователей, а не только того, кто изменил значение.

Как я могу получить только тот, который изменился в базе данных?

Спасибо, и мне жаль, если это любительский вопрос

Ответ №1:

Прослушиватель получает моментальный снимок, содержащий данные в указанном месте базы данных во время события. Вы можете извлечь данные из снимка с помощью метода val ().

Это технически означает, что любое изменение в узле пользователей вернет весь узел.

Вы пытаетесь прослушать узел конкретного пользователя? Затем попробуйте изменить свою ссылку на:

 let usersRef = db.ref('/users/userUID')
 

В случае, если вы показываете список всех пользователей и хотите прослушать обновления для каждого из них, вам придется добавить нового слушателя для каждого из них с приведенной выше ссылкой. (Просто измените UID)

Комментарии:

1. Например, если у нас 50 пользователей, и один из них должен был изменить имя, я хотел бы обнаружить это изменение для этого конкретного пользователя. Разумно ли прикреплять слушателя ко всем из них? Что делать, если есть 10000 пользователей? Спасибо за помощь!

2. @user2752798 Я бы не стал загружать всех пользователей сразу tbh… вы можете показать, скажем, 500 сразу или около того… для ограничений вы можете проверить документацию firebase.google.com/docs/database/usage/limits 10000 не должно быть проблемой…

3. Пожалуйста, простите меня за то, что я не совсем понимаю. Итак, в случае, когда у меня есть база данных, например: пользователи: [{ Идентификатор пользователя:1, имя:Боб}, {Идентификатор пользователя:2, Имя:Джон ] И еще 1000 пользователей.. Как бы я обнаружил изменение только 47-го пользователя, например, который изменил свое имя? Просто как-то прикрепить ссылку ко всем пользователям?

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

5. Спасибо! Кнопка «Голосовать» не разрешена, так как у меня недостаточно очков репутации. Но я нажал на значок галочки!