Обновляйте профили пользователей без необходимости что-либо обновлять в firestore

#javascript #firebase #react-native #google-cloud-firestore

# #javascript #firebase #react-native #google-облако-firestore

Вопрос:

Я хочу обновить каждый из моих профилей пользователей в моем Firestore, добавив, какое устройство они используют. Я добавил следующий код ниже в свой app.js в componentDidMount есть функция, чтобы при открытии приложения оно обновлялось, но на самом деле это нужно сделать только один раз. Будет ли это постоянно совершать звонки для обновления их профиля, я не хочу тратить время впустую и вызывать много записей в Firebase.

 componentDidMount() {

    firebase.auth().onAuthStateChanged((user) => {
    if (user) {


      const user = firebase.auth().currentUser;
        let uid;
        if (user != null) {
          uid = user.uid;
          const db = firebase.firestore();
          db.collection('users').doc(uid).update({
            device: Platform.OS === 'ios' ? 'IOS' : 'Android',
          }).then(function() {

          })
          .catch(function(error) {
          
          });
        }


    } else {
      this.setState({ device: null, });
    }
  });

  }
 

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

1. Самый простой подход — сохранить некоторое логическое значение на пользовательском устройстве (возможно, в асинхронном хранилище или что-то в этом роде) и обновлять firestore только в том случае, если логическое значение равно false или null. после успешного сохранения информации о пользовательском устройстве сделайте это значение true, чтобы предотвратить любые нежелательные вызовы firestore

2. Попробуйте использовать hook useContext

3. подход nithinpp будет работать для одного устройства, но что произойдет, если один и тот же пользователь войдет в приложение на нескольких устройствах в разное время? Что вы хотите, чтобы база данных отображалась в это время?

4. Я согласен с Фрэнком, что вы ожидаете, например, если ваш пользователь меняет свое устройство еженедельно? Они должны видеть, что они используют предыдущее устройство?