【问题标题】:How to Remove Firebase Cloud Function Push Key in Snapshot Data?如何删除快照数据中的 Firebase 云功能按键?
【发布时间】:2019-02-19 03:04:42
【问题描述】:

我想使用 HTTP 请求触发器通过 Firebase Cloud Function 获取 Firebase 实时数据。我已经做到了。

但是,我只需要获取它的快照/子数据而不需要它的按键。

这是我的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firebase);

exports.showEvent = functions.https.onRequest((req, res) => {
    const params = req.url.split("/");
    const uId = params[1];
    const deviceId = params[2];

    return admin.database().ref(uId + '/' + deviceId).on('value', (snapshot) => {
        var event = snapshot.val();

        res.send(event);
    });
});

调用my-project.firebaseapp.com/event/123/时,该代码对我有效。

并返回如下内容:

"-LYkQIOBzDOmExyw2jPw": {"batt": 3.7, "curr": 5.6, "humi": 68.1},
"-LYkQNMCQcsIYvMVtxD5": {"batt": 3.6, "curr": 5.6, "humi": 68.2}

我的问题是如何删除它的push key id,所以我的新数据响应变成了这样:

{"batt": 3.7, "curr": 5.6, "humi": 68.1},
{"batt": 3.6, "curr": 5.6, "humi": 68.2}

谢谢

我的更新程序,现在可以运行了:

 var returnArr = [];

    admin.database().ref(uId + '/' + deviceId).on('value', (snapshot) => {
        snapshot.forEach(function (childSnapshot) {
            var item = childSnapshot.val();
            returnArr.push(item);
        });
    });

 res.send(returnArr); 

【问题讨论】:

    标签: javascript firebase-realtime-database google-cloud-functions


    【解决方案1】:

    您的设备似乎有多个读数。要在没有密钥的情况下发送响应,您可以这样做:

    return admin.database().ref(uId + '/' + deviceId).on('value', (snapshot) => {
        var events = [];
        snapshot.forEach((child) => {
            events.push(child.val());
        });
        res.send(events);
    });
    

    【讨论】:

    • 嗯,它有效。但只给出第一个数据(只有一个数据)。
    • 好吧,我尝试将事件数据插入数组,现在可以了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2018-01-08
    • 2020-10-10
    • 2020-03-28
    • 2020-09-10
    • 2019-02-07
    • 2019-05-31
    相关资源
    最近更新 更多