如何解决Firestore [ReferenceError:找不到变量:xxx]
我正在尝试使用Expo React-Native应用程序更新Firebase中的嵌套集合,并且从catch语句收到错误:
更新用户活动地图时出错:[ReferenceError:找不到变量:活动]
这很有趣,因为该功能正常工作并且Firestore集合仍在更新,但是无论如何都会记录此错误。这里的问题是,因为.catch()总是发生,所以从未到达.then()语句中的调度。
我认为这是由于firestore.collection('users').doc(userId).collection('activities').doc(activityId).set()
catch语句引起的。我很困惑,因为活动集合存在并且被写入到函数中,即使它不存在,我也记得在某处读到Firestore会自动创建文档。有人可以为我提供有关此错误的帮助吗?
数据库结构:用户(集合)-> [某些用户ID](文档)->活动(集合)-> [某些活动文档]
const activityRef = firestore.collection('activities').doc(activityId);
let activityInfo = {}
let participants = {}
// get activity information
activityRef.get()
.then(doc => {
activityInfo = doc.data();
participants = doc.data().participants;
})
.then(() => {
// update participant activity status
participants[userId] = 'participant';
// update activityRef with new participant
activityRef.update({ participants }).then(() => {
// add to activities collection in the current user document
firestore.collection('users').doc(userId).collection('activities').doc(activityId)
.set({
id: activityId,status: 'participant'
})
.then(() => {
console.log('activity info',activityInfo);
dispatch({
type: 'ENROLL_ACTIVITY',activityId,activity: activityInfo
});
})
.catch((error) => {
console.log('catch statement: activityInfo',activityInfo);
// The document probably doesn't exist.
console.log("Error updating user activities map: ",error);
})
})
.catch(error => {
// The document probably doesn't exist.
console.error("Error updating activity document: ",error);
});
})
感谢您阅读本文!任何信息都将有助于解决该错误:)
编辑:如果我删除catch语句
.catch((error) => {
console.log('catch statement: activityInfo',error);
})
然后我得到这个黄色警告,未处理的承诺被拒绝,对任何人来说,这个错误看起来都很熟悉吗?
[Unhandled promise rejection: ReferenceError: Can't find variable: activities]
Stack trace:
node_modules/immer/dist/immer.module.js:39:2 in assignMap
node_modules/redux/lib/redux.js:464:32 in combination
node_modules/redux/lib/redux.js:218:6 in dispatch
node_modules/promise/setimmediate/core.js:37:13 in tryCallOne
node_modules/promise/setimmediate/core.js:123:24 in setImmediate$argument_0
node_modules/react-native/Libraries/Core/Timers/JSTimers.js:135:14 in _callTimer
node_modules/react-native/Libraries/Core/Timers/JSTimers.js:183:16 in _callImmediatesPass
node_modules/react-native/Libraries/Core/Timers/JSTimers.js:446:30 in callImmediates
[native code]:null in callImmediates
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:396:6 in __callImmediates
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:144:6 in __guard$argument_0
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:373:10 in __guard
node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:143:4 in flushedQueue
[native code]:null in flushedQueue
[native code]:null in callFunctionReturnFlushedQueue
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。