如何在 Firebase 函数中访问不同的集合

我保证我彻底检查了所有以前提出的问题,没有任何类似的东西。我有一个 firebase 函数,它在 firestore 集合上监听 onCreate。


exports.sendEmail = functions.firestore.document('/Users/{documentId}')

    .onCreate((snap, context) => {


        const username = snap.data().username;

        const email = snap.data().email;


        console.log(username, email)


        const mailRef = functions.firestore.document('/mail')

        return mailRef.ref.set({

            email: email,

            subject: 'Welcome'


        });



    });

在中创建文档后Users,我想获取用户中的数据并在名为的主集合中创建一个新文档mail。这可能吗,因为我已经阅读了 10 次文档,但没有任何内容。非常感谢任何帮助。


跃然一笑
浏览 158回答 2
2回答

白衣染霜花

要在云函数中创建文档,则需要使用 admin sdk,所以首先安装包:npm install firebase-admin --save初始化 admin sdk:const admin = require('firebase-admin');admin.initializeApp({  credential: admin.credential.applicationDefault()});const db = admin.firestore();然后你可以添加:       const mailRef = db.collection('mail')        return mailRef.add({            email: email,            subject: 'Welcome'        });https://googleapis.dev/nodejs/firestore/latest/CollectionReference.html#add

慕村9548890

我知道这有点晚了,以防万一有人发现自己有同样的问题。当您使用 set() 创建文档时,您必须为要创建的文档指定一个 ID。所以基本上上面的代码只需要稍微调整如下exports.sendEmail = functions.firestore.document('/Users/{documentId}')    .onCreate((snap, context) => {        const username = snap.data().username;        const email = snap.data().email;        const uid  = context.params.documentId  //get the doc ID        const alternateUid = //you can generate a random ID here        console.log(username, email)        const mailRef = firestore.collection("mail").doc(uid)        return mailRef.set({            email: email,            subject: 'Welcome'        });    });但有时文档没有有意义的 ID,或者您不想使用上述任何内容。然后让 Cloud Firestore 为您自动生成 ID 会更方便。您可以通过调用 add() 来做到这一点,例如const mailRef = firestore.collection("mail")    return mailRef.add({        email: email,        subject: 'Welcome'    })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript