Javascript Can';t从Firebase获取数据
我无法使用以下简单方法从Firebase数据库获取数据:Javascript Can';t从Firebase获取数据,javascript,firebase,react-native,google-cloud-firestore,expo,Javascript,Firebase,React Native,Google Cloud Firestore,Expo,我无法使用以下简单方法从Firebase数据库获取数据: getLists(callback) { let ref = firebase.firestore().collection("users").doc(this.userId).collection("lists"); this.unsubscribe = ref.onSnapshot(snapshot => { let lists = [];
getLists(callback) {
let ref = firebase.firestore().collection("users").doc(this.userId).collection("lists");
this.unsubscribe = ref.onSnapshot(snapshot => {
let lists = [];
console.log('1');
snapshot.forEach(doc => {
console.log('2');
console.log("This message doesn't appear in console...");
});
console.log('3');
callback(lists);
});
}
正如您所看到的,代码没有通过“snapshot.forEach()”部分运行。
为什么?我在网上看到很多使用这种方法的例子。控制台中仅显示“1”和“2”
我正在关注这个视频教程,它做了完全相同的事情,但它对他有用()
我在Android手机和Firebase v7.9.0上使用Expo CLI
谢谢你的帮助 我最终创建了一个比教程视频作者创建的更简单的集合。它与它一起工作:
getLists(callback) {
let ref = firebase.firestore().collection("lists").orderBy("name");
this.unsubscribe = ref.onSnapshot(snapshot => {
let lists = [];
snapshot.forEach(doc => {
lists.push({ id: doc.id, ...doc.data() });
});
callback(lists);
}, function(error) {
console.log(error);
});
}
实际上,我们无法理解为什么您的代码没有通过
forEach
部分运行,需要您的帮助来告诉我们发生了什么。如果将类似的console.log
放在let list=[]
之前,它会打印吗?如果没有,您能否显示一个您希望与此查询匹配的文档?控制台中是否打印了任何错误消息(即用户是否有权阅读此内容)?谢谢您的回答!是的,如果我在let lists=[]
之前放置一个控制台.log()
,它会打印并且没有错误消息…下一步,我会添加第二个错误回调,如图所示:如果这也没有显示错误,那么很可能读操作确实没有文档。你说得对!我用它来测试,以获取假Firebase集合“test”的数据:Firebase.firestore().collection(“users”).doc(this.userId).collection(“test”)代码>我们现在的处境和以前一样。我想我错过了什么。教程视频和我的projet之间的唯一区别是关于创建我的第二个Firebase集合“列表”:我必须生成一个id来保存我的新集合。我不确定最后的评论是什么意思。如果你有一个不同的测试可以给出更清晰的结果,请编辑这个问题(它下面有一个链接)来显示。如果您在错误处理程序中没有看到错误,但仍然认为应该有结果,那么如果您还包括一个屏幕截图,该截图显示您希望在Firebase控制台中返回的文档(包括其完整路径),则可能会很有用。