android - 如何创建 Cloud Function 并在 Cloud Firestore 中触发它

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

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

最佳答案

您只需按下如下所示的 ADD COLLECTION 按钮即可实现此目的:

enter image description here

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

enter image description here

以您想要的任何方式命名您的收藏。我将其命名为 Products。按 NEXT 将再次出现一个新的弹出窗口:

enter image description here

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

这是结果:

enter image description here

您可以使用 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 并发送通知。

关于android - 如何创建 Cloud Function 并在 Cloud Firestore 中触发它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50589839/

相关文章:

firebase - 最佳实践 : Display data from Firebase in Flutter

objective-c - Firebase 上的 NSData

Firebase 托管 ssl 证书显示不同的域

android - 如何将新的 conscrypt 库集成到 Android 并默认使用

java - 简单的 Android 应用程序即将 OOM

android - 如何按应用过滤Android logcat?

java - 从 Firestore 获取所有图像 url

flutter - 未处理的异常 : type 'Future<void>' is not a subtype of type 'Future<Photography>' on Firestore

Firebase 功能测试 "The default Firebase app does not exist."

java - 在 Intent 中发送信息并使用 FLAG_ACTIVITY_CLEAR_TOP