为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2022-10-13 09:39:57
我保证我彻底检查了所有以前提出的问题,没有任何类似的东西。我有一个 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 次文档,但没有任何内容。非常感谢任何帮助。
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

要在云函数中创建文档,则需要使用 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


查看完整回答
反对 回复 2022-10-13
?
慕村9548890

TA贡献1884条经验 获得超4个赞

我知道这有点晚了,以防万一有人发现自己有同样的问题。当您使用 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'

    })


查看完整回答
反对 回复 2022-10-13
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号