Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t从Firebase获取数据_Javascript_Firebase_React Native_Google Cloud Firestore_Expo - Fatal编程技术网

Javascript Can';t从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 = [];

我无法使用以下简单方法从Firebase数据库获取数据:

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控制台中返回的文档(包括其完整路径),则可能会很有用。