【问题标题】:How to create a Cloud Function and triggering it in Cloud Firestore如何创建 Cloud Function 并在 Cloud Firestore 中触发它
【发布时间】:2018-05-29 17:27:26
【问题描述】:

我是 Cloud Firestore 的新手,我想在将新用户添加到 Firestore 时创建一个函数,它会生成一个唯一的随机数并将其保存在文档中。如何使用 Google Cloud Console 实现它?

【问题讨论】:

标签: android firebase google-cloud-firestore firebase-console


【解决方案1】:

您可以通过按如下所示的ADD COLLECTION 按钮来实现此目的:

会出现一个新的弹出窗口,如下所示:

以您想要的各种方式命名您的收藏。我将其命名为Products。按NEXT 又会弹出一个新的弹窗:

Document id 字段留空。选择一个字段(我命名为 id productName)和一个名为 Milk 的 String 类型的值。

这是结果:

您可以使用Cloud Functions for Firebase,因此每次在您的 Cloud Firebase 数据库中的特定位置添加新条目(文档)时,您都可以触发另一个函数。为此,我给你举个例子。假设我们想在发生某事时向用户发送通知。

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

exports.yourFunction = functions.firestore.document("notifications/{uid}/userNotifications/{notificationId}").onWrite(event => {
    const uid = event.params.uid;
    const notificationId = event.params.notificationId;

    return admin.firestore().collection("notifications").doc(uid).collection("userNotifications").doc(notificationId).get().then(queryResult => {
        const uid = queryResult.data().senderUid;
        const notificationMessage = queryResult.data().notificationMessage;

        const fromUser = admin.firestore().collection("users").doc(senderUid).get();
        const toUser = admin.firestore().collection("users").doc(uid).get();

        return Promise.all([fromUser, toUser]).then(result => {
            const fromUserName = result[0].data().userName;
            const toUserName = result[1].data().userName;
            const tokenId = result[1].data().tokenId;

            const notificationContent = {
                notification: {
                    title: "Your Title",
                    body: notificationMessage,
                    icon: "default",
                    sound : "default"
                }
            };

            return admin.messaging().sendToDevice(tokenId, notificationContent).then(result => {
                console.log("Notification sent!");
            });
        });
    });
});

因此,当此路径notifications/{uid}/userNotifications/{notificationId} 发生新的写入操作时,即出现新文档时,我们可以创建Promise 并发送通知。

【讨论】:

  • 我知道集合添加,我想知道并实现每当使用 Andriod 或 NodeJs 或 Angular 添加条目时,一个函数可能会触发,我可以实现另一个功能,例如添加用户的配置文件可能会生成它的随机 ID。
  • 我已经问过您是否想使用 Firebase 控制台实现这一目标,您说是的。但是根据您的评论,请查看我的更新答案。
  • 是的,我回复你是的,因为这与Firesase Cloud有关,但使用我们需要实现的功能,显然是通过控制台。
  • 我现在明白了。希望我上面的功能能解决你的问题。
  • 你试过我上面的解决方案,一切都好吗?
猜你喜欢
  • 2020-01-02
  • 2020-10-26
  • 2018-03-27
  • 2018-06-22
  • 1970-01-01
  • 2022-06-15
  • 2018-05-05
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多