首页 > 解决方案 > 无法从 Firebase 检索文档列表

问题描述

我正在尝试在我的 firebase 函数上使用 admin SDK 和 firestore api 检索文档列表。我尝试使用以下内容:

import * as admin from 'firebase-admin';
const adminFirestore = admin.firestore();
    adminFirestore.collection('accounts');

        collection.get().then(snapshot => {

            snapshot.forEach(doc => {

                console.log( doc.data() );

            });

        });

但是,这不会打印此集合中的单个文档。我还尝试了以下方法:

const ref = adminDb.ref('accounts');

ref.once("value")
    .then(function(snapshot) {
        console.log(snapshot);
    });

ref.once('value', (snapshot) => {
  console.log(snapshot.val());

}).then(something => {

    console.log(something);

})

没有什么能真正打印收集器中的文档。我得到的只是对集合的引用,并且不太清楚如何接收该集合中的条目。有什么建议吗?

标签: node.jsfirebasegoogle-cloud-firestoregoogle-cloud-functionsfirebase-admin

解决方案


你不远了!如文档中所示您确实必须使用该get()方法,但您的问题来自您尚未声明collection变量的事实。

您应该执行以下操作:

const adminFirestore = admin.firestore();
const collection = adminFirestore.collection('accounts');  

collection.get().then(snapshot => {
    snapshot.forEach(doc => {
       console.log( doc.data() );
    });
});

或者,其他可能性,如下:

const adminFirestore = admin.firestore();
adminFirestore.collection('accounts').get().then(snapshot => {...});

或如下:

admin.firestore().collection('accounts').get().then(snapshot => {...});

请注意,在您的第二次尝试中,const ref = adminDb.ref('accounts');您实际上是针对Realtime Database,这与Cloud Firestore数据库不同(请参阅https://firebase.google.com/docs/reference/node/firebase.database.Database?authuser =0#ref )。它们都是 Firebase 提供的产品/服务,但有所不同。


推荐阅读