Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Firebase数据库中获取值并将其分配给Firebase云函数中的值?_Javascript_Node.js_Firebase_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

Javascript 如何从Firebase数据库中获取值并将其分配给Firebase云函数中的值?

Javascript 如何从Firebase数据库中获取值并将其分配给Firebase云函数中的值?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,因此,我使用firebase作为演示应用程序的后端,我非常喜欢这个堆栈,但有一个问题我挂断了电话,我不知道如何从数据库中检索值,我有很好的密钥。 简单地说,我正在从一台设备发送信息,其中包含另一台设备的友好名称,该设备正试图访问firebase函数。 函数代码如下所示: exports.connectMe = functions.https.onRequest((req, res) => { cors(req, res, () => { admin.database(

因此,我使用firebase作为演示应用程序的后端,我非常喜欢这个堆栈,但有一个问题我挂断了电话,我不知道如何从数据库中检索值,我有很好的密钥。 简单地说,我正在从一台设备发送信息,其中包含另一台设备的友好名称,该设备正试图访问firebase函数。 函数代码如下所示:

exports.connectMe = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
    admin.database().ref('calls/' + req.body.id + '/').set({
        target: req.body.target,
        caller: req.body.caller,
        time: req.body.time
    });

    const target = req.body.target;
    console.log(`target: ${target}`);
    const targetCall = admin.database().ref(`tokens/${target}/token`);
    console.log(targetCall);
    // const targetValue = targetCall.val();
    res.status(200).send("Thanks For The Call!");
    });    
});

变量targetCall正确地指向了我想要到达的db条目,但我无法提取我生命中的值。位于admin.database.ref的令牌需要放置在http请求中。我如何获得该值?注释掉的代码显示了我想要存储它的变量,但我知道.val不是引用方法。对于记录,admin设置为需要'firebase-admin';代码前面的部分。

您需要调用函数一次,如下所示:


您需要调用函数一次,如下所示:


很快就可以让数据库查询正常工作了

请看下面的图片。它解释了如何访问结构化数据

exports.connectMe = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
        const callRef = admin.database().ref('calls/' + req.body.id + '/').set({
            target: req.body.target,
            caller: req.body.caller,
            time: req.body.time
        });

        const target = req.body.target;
        console.log(`target: ${target}`);

        const takenRef = admin.database().ref(`tokens/${target}/token`)
            .once('value');

        Promise.all([callRef, takenRef])
            .then(results => {
                const snapshot = results[1]; // Promise of `takenRef`
                console.log(snapshot.val()); // This is the data from the database...

                res.status(200).send("Thanks For The Call!");
            });
    });    
});

查看更新的代码,我添加了。一旦“值”。然后将快照添加到您的查询中,这样您就可以访问数据了。

您很快就可以让数据库查询正常工作了

请看下面的图片。它解释了如何访问结构化数据

exports.connectMe = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
        const callRef = admin.database().ref('calls/' + req.body.id + '/').set({
            target: req.body.target,
            caller: req.body.caller,
            time: req.body.time
        });

        const target = req.body.target;
        console.log(`target: ${target}`);

        const takenRef = admin.database().ref(`tokens/${target}/token`)
            .once('value');

        Promise.all([callRef, takenRef])
            .then(results => {
                const snapshot = results[1]; // Promise of `takenRef`
                console.log(snapshot.val()); // This is the data from the database...

                res.status(200).send("Thanks For The Call!");
            });
    });    
});

查看更新的代码,我已经添加了。一旦“值”。然后将快照添加到您的查询中,这样您就可以访问数据。

这使它按照我的要求工作。我不明白这一点。曾经“值”的含义不仅仅是初始化,谢谢你澄清这一点!不要忘记在这里等待两个异步操作!你可能会在比赛状态中结束,并得到不一致的结果。我保证,所有。。。为了胜利,这让我如愿以偿。我不明白这一点。曾经“值”的含义不仅仅是初始化,谢谢你澄清这一点!不要忘记在这里等待两个异步操作!你可能会在比赛状态中结束,并得到不一致的结果。我保证,所有。。。为了胜利。