#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. Я согласен с Фрэнком, что вы ожидаете, например, если ваш пользователь меняет свое устройство еженедельно? Они должны видеть, что они используют предыдущее устройство?