Firebase 函数获取键名称列表



我是 Nodejs 的新手,我正在尝试完成这项工作 2 天。我想获取存储在特定节点下的键名称列表(即喜欢此用户的用户 ID)。但是我的代码没有比这个日志更进一步: "getting key names for user: NRtRoPEh4HUYUc0Hz6unMCsTBSn1"

然后我的代码超时,并显示以下日志:Function execution took 60002 ms, finished with status: 'timeout'

我的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const serviceAccount = require('./service-account.json');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: 'MY-URL',
});
var events = require('events');
exports.getLikedUsers = functions.database.ref('/users_to_test/{pushID}').onCreate(snapshot => {
    let UID = snapshot.val();
    let likeList = new Array();
        console.log('getting key names for user: ', UID);

        return admin.database().ref(`/user_likes/${UID}/{likedUser}`)
            .once('child_added').then(snap =>
            {          
                snap.forEach((childSnap) =>{
                    likeList.push(childsnap.key);
                });
                console.log('liked users list: ' + likeList.entries());
                return;
            }).then(function (functionReturn)    
        {
        return;
        });
    });
`

您的查询未返回任何结果,并且无限期地等待,直到"child_added"触发任何结果可用。 这会导致函数超时。

这里有两点错误:

  1. 这个参考几乎肯定不是你想要的:"/user_likes/${UID}/{likedUser}"你在那里插入了一个变量(${UID}),另一个看起来像变量插入,但实际上不是({likedUser})。 您实际上是在搜索一个名为"{likedUser}"的子节点。 我想这不是你想要的。

  2. "child_added"查询在云函数中没有真正的意义。 您永远不想执行无限期等待结果的查询。 您几乎总是希望使用"value"事件来获取某个位置的一些数据,或者如果该位置不存在则什么都不获取,因此您的函数可以快速移动并执行下一件事。

相关内容

  • 没有找到相关文章

最新更新