【问题标题】:Get Every Document from inside a Users Collection Firebase从用户集合 Firebase 中获取每个文档
【发布时间】:2020-01-09 15:18:33
【问题描述】:

我编写了一个 Firebase 云函数,我希望在其中获取每个用户称为“数字”的内部集合,并从该集合中读取每个文档以进行一些比较。

知道怎么做吗?

我对 firebase 还是很陌生,出于某种原因,数据库导航命令对我来说不太好。

我尝试了一些命令都没有成功

const snapshot = functions.database.collection('users').collection('numbers').get()
 let sfRef = db.collection('users');
    sfRef.getCollections().then(collections => {
        collections.forEach(collection => {
        console.log('Found subcollection with id:', collection.id);
        });
    });

这是一个松散的云代码基础结构

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

export const prize1 = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    const users = functions.database.ref('/users/numbers')

    console.log("")
    return null;
});

我觉得我对如何做到这一点有一个很好的想法,但是语法让我退缩了。

用户的集合。浏览此处的每个文档,即每个用户。 在每个用户中转到被称为号码的集合。 在名为 numbers 的集合中,遍历每个文档并找到要进行逻辑/比较的 numbers 字段。

希望这可以帮助您了解我的数据库的排序方式。

【问题讨论】:

    标签: javascript firebase google-cloud-functions


    【解决方案1】:

    你可以这样试试:

    let usersRef = db.collection('users');
    let allUsers = usersRef.get();
       .then(userSnapshot => {
         userSnapshot.forEach(userDoc => {
           userDoc.ref.collection('numbers').get().then(numSnapshot => {
             numSnapshot.forEach(numDoc => {
               console.log(numDoc.data().numbers);
               // here you got your numbers document with the numbers field
             });
           });
         });
       })
       .catch((error) => { 
           console.log("Error getting document: ", error);
       });  
    

    更多信息你可以看herehere

    【讨论】:

    • 感谢康斯坦丁!复习这有助于我更好地理解整个数据库通信。我最初在实现它时遇到了一些问题,但在谷歌的一些帮助之后,一切似乎都运行顺利。
    【解决方案2】:

    您不能使用functions 访问数据库。您定义的functions 用于构建响应事件的触发器。如果您想从 Cloud Firestore 获取数据,您应该通过 admin 使用 Firebase Admin SDK。如果您查看official samples,它也可能会有所帮助。

    我还要指出,您的代码示例似乎在访问 Cloud Firestore 和 Realtime Database(它们是不同的数据库产品)之间存在差异。您的屏幕截图显示了 Firestore,因此请忽略实时数据库的任何 API。

    【讨论】:

    • 感谢道格的帮助!你是对的,我已经实现了我得到的另一个答案,并很快遇到了一些关于 firestore 和实时数据库差异以及使用函数的问题。
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2020-04-23
    • 2021-01-23
    • 2021-10-30
    • 2020-08-15
    • 2021-01-06
    相关资源
    最近更新 更多