如何在打字稿中访问(firestore)文档ID或地址?

Posted

技术标签:

【中文标题】如何在打字稿中访问(firestore)文档ID或地址?【英文标题】:How to access the (firestore) document id or adress in typescript? 【发布时间】:2020-06-17 11:24:16 【问题描述】:

我正在制作一个功能,一旦在他的帐户中添加了新的订单文档,它将发送到用户登录的所有设备。

这是我运行该函数的代码。我的问题是如何从文档中访问 userEmail/orderId。

export const orderUserNotif = functions.firestore
    .document('userAccounts/userEmail/orders/orderId')
    .onCreate(async snapshot => 

        const order = snapshot.data();

        const querySnapshot = await db
            .collection('userAccounts')
            .doc("userEmail") //Want to access the userEmail from the document address
            .collection('tokens')
            .get();

        const tokens = querySnapshot.docs.map(snap => snap.id);

        const payload: admin.messaging.MessagingPayload = 
            notification: 
                title: order!.title + " with ID " + 'orderId', //Want to access order id here
                body: `Your order has been shipped`,
            
        ;

        return fcm.sendToDevice(tokens, payload);
    )

【问题讨论】:

【参考方案1】:

您可以使用context.params 访问触发云函数的路径中的值。 context 作为第二个参数传递给您的 Cloud Function,但您尚未声明它。

所以是这样的:

export const orderUserNotif = functions.firestore
    .document('userAccounts/userEmail/orders/orderId')
    .onCreate(async (snapshot, context) => 

        const order = snapshot.data();

        const querySnapshot = await db
            .collection('userAccounts')
            .doc(context.params.userEmail)
            .collection('tokens')
            .get();

        const tokens = querySnapshot.docs.map(snap => snap.id);

        const payload: admin.messaging.MessagingPayload = 
            notification: 
                title: order!.title + " with ID " + context.params.orderId,
                body: "Your order has been shipped",
            
        ;

        return fcm.sendToDevice(tokens, payload);
    )

另请参阅 specifying a group of documents using wildcards 上的 Firebase 文档。

【讨论】:

以上是关于如何在打字稿中访问(firestore)文档ID或地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应打字稿中从json文件中获取和显示数据

如何在打字稿中声明成功/失败返回类型

如何在打字稿中验证输入标签的类型“target.dataset”属性

如何在打字稿中访问枚举的名称

如何访问打字稿中的字段验证错误?

在打字稿中使用角度为 6 的节点短 id 模块