Firebase 函数 - RealtimeDatabse 触发器选择 2 个子节点并将它们放置在其他节点中

问题描述 投票:0回答:1

我在firebase实时数据库“

zSearchingUsers
”中有一个节点,其中所有搜索用户在开始搜索时都会进入哪个用户端应用程序,它们看起来如图所示:

Searching users

现在我想做的是定义一个 firebase 函数(javascript),它将监听

zSearchingUsers
节点,每当有 2 个或更多用户到来时,它就会选择其中一对并将它们放入
zPairedUsers
中,格式如下:

Paired Users

任何帮助将不胜感激,谢谢!

javascript firebase firebase-realtime-database
1个回答
0
投票

更新 这是我2020年的问题,当时我不知道如何编写firebase函数,但现在我知道了,所以我发布了我的问题的答案,希望对其他人有帮助。 这是实现此功能的 Cloud Function 的 TypeScript 版本:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

export const pairUsers = functions.database.ref('/zSearchingUsers')
    .onUpdate(async (change, context) => {
        const snapshot = change.after;
        const users = snapshot.val();

        // Check if there are at least 2 users
        if (users && Object.keys(users).length >= 2) {
            // Get an array of user IDs
            const userIds = Object.keys(users);

            // Pair the first two users
            const user1Id = userIds[0];
            const user2Id = userIds[1];

            // Create a new object with the paired users
            const pairedUsers: { [key: string]: any } = {
                [user1Id]: users[user1Id],
                [user2Id]: users[user2Id]
            };

            // Save the paired users to zPairedUsers
            const pairedUsersRef = admin.database().ref('/zPairedUsers');
            await pairedUsersRef.set(pairedUsers);

            // Remove the paired users from zSearchingUsers
            await snapshot.ref.update({
                [user1Id]: null,
                [user2Id]: null
            });

            console.log('Users paired:', user1Id, user2Id);
        } else {
            console.log('Not enough users to pair.');
        }

        return null;
    });

在此 TypeScript 版本的云函数中:

  • 我们从
    functions
    导入
    firebase-functions
    ,从
    admin
    导入
    firebase-admin
  • 云功能
    pairUsers
    监听
    /zSearchingUsers
    节点上的更新。
  • 当节点更新时,它会检查节点中是否有2个或更多用户。
  • 如果至少有 2 个用户,它将前两个用户配对并将它们移动到
    /zPairedUsers
    节点。
  • 然后将配对的用户从
    /zSearchingUsers
    节点中删除。

另请确保使用 Firebase CLI 将此 TypeScript Cloud Function 部署到您的 Firebase 项目。如果您尚未在 Firebase 项目中设置 TypeScript,则需要首先执行此操作:

  1. 安装 TypeScript:

    npm install -g typescript
    
  2. 在 Firebase Functions 文件夹中设置 TypeScript:

    cd functions
    tsc --init
    
  3. 安装 Firebase 和 Firebase Admin SDK 类型:

    npm install --save @types/firebase @types/firebase-admin
    
  4. TypeScript 设置完成后,您就可以部署该功能了:

    firebase deploy --only functions
    

有关使用

Firebase functions
触发
Realtime Database
的更多信息,请点击此链接

© www.soinside.com 2019 - 2024. All rights reserved.