Я вчера написал о той же проблеме, что и у меня, но я просто не могу заставить ее работать. Мне действительно нужна помощь в этом больше, чем когда-либо!
Я опубликую всю функцию ниже:
const db = firebase.firestore; //initializing database
//setting state here, removed for brevity
_checkForUniqueDevice() {
const { currentUser } = firebase.auth();
this.state.currentUser = currentUser;
const document = db().collection('RriNshpiUsers').doc('EzGNfNl63LQvjdauFWosG08Ishj2');
const ref = document.collection('private').doc('ApbckRkRITeh0WQIiQiz');
const publicDoc = document.collection('public').doc('aRzHZ8zro7XFpkJMg1TH');
const updateFunction = async transaction => {
const [active] = await Promise.all([
transaction.get(ref),
]);
const { location } = this.state;
let timestamp = moment(location.timestamp).format("MM-DD-YYYY h:mm:ss")
const user_active = active.data().act;
const device_id = active.data().devID;
if (user_active === 0 && device_id === '') {
transaction.update(ref, {
devID: this.state.deviceId,
act: 1,
time: timestamp,
lat: location.latitude,
course: location.course,
speed: location.speed,
alt: location.altitude,
long: location.longitude,
acc: location.accuracy,
altAcc: location.altitudeAccuracy,
courseAcc: location.courseAccuracy,
speedAcc: location.speedAccuracy
});
transaction.update(publicDoc, {
addCoord: location
});
}
};
db().runTransaction(updateFunction)
.then(result => {
//never returns something
})
.catch(error => {
//never catches any errors
});
}
Я использую эту функцию, которую я использовал где-то еще, где она работала совершенно нормально, но я не могу понять, почему она молча терпит неудачу здесь?
Когда я вызываю эту функцию, она выполняет первую строку, в которой строит запрос, затем переходит к db().runTransaction(updateFunction)
этой строке и пытается выполнить, но не обнаруживает никаких ошибок и ничего не возвращает в обратном вызове - Я установил точки останова в обратных вызовах .catch
и .then
, но никогда не останавливался на этом.
Если есть ошибка, не стоит ли ее отлавливать? Или, если это удастся, не должно ли что-то возвращать в обратном вызове?
Есть идеи, что здесь происходит?
РЕДАКТИРОВАТЬ: скриншоты