Как получить доступ к идентификатору или адресу документа (firestore) в машинописном тексте? - PullRequest
0 голосов
/ 17 июня 2020

Я создаю функцию, которая будет отправляться на все устройства, на которых пользователь вошел в систему, как только в его учетную запись будет добавлен новый документ заказа. У меня вопрос, как получить доступ к {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 Ответ

1 голос
/ 17 июня 2020

Вы можете получить доступ к значениям из пути, который запустил облачную функцию, с помощью context.params. context передается в качестве второго параметра вашей облачной функции, но вы еще не объявляете его.

Примерно так:

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);
    })

Также см. Документацию Firebase на указание группы документов с использованием подстановочных знаков .

...