【发布时间】:2020-04-11 20:00:49
【问题描述】:
我昨天发布了关于我遇到的同样问题,但我无法让它工作我真的比以往任何时候都更需要帮助!
我会把整个函数贴在下面:
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 回调中的断点,但永远不会停在那里。
如果有错误,不是应该捕获它吗?或者如果它成功了是不是应该在回调中返回一些东西?
知道这里发生了什么吗?
编辑:截图
【问题讨论】:
标签: javascript firebase react-native google-cloud-firestore