【问题标题】:Read db data in Cloud Functions in Firebase在 Firebase 的 Cloud Functions 中读取 db 数据
【发布时间】:2017-10-31 09:04:11
【问题描述】:

在 firebase 文档中,我没有找到从 firebase db 获取数据的简单方法 - 只能通过事件(.on、.once)。这是唯一的方法吗?

在这种情况下,要从不同的分支获取数据,我需要在处理程序中描述处理程序吗?并且 response.send() 必须在最深的处理程序中?

这是正确的函数吗?

exports.test = functions.https.onRequest((request, response) => {
var db = admin.database();

db.ref("test/val").once("value", snap => {
    var val1 = snap.val();
    db.ref("test/val").set(val1+1);
    db.ref("test2/val").once("value", snap => {
        var val2 = snap.val();
        response.send(val1+", "+val2);
    });
});

//response.send("bad way");
});

【问题讨论】:

    标签: javascript node.js firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    您已经很接近了,但您需要确保等待所有异步工作完成(您的set 不会被等待)。我已经对其进行了一些修改,以使用 Promise 而不是回调来使流程清晰:

    exports.test = functions.https.onRequest((request, response) => {
      var db = admin.database();
    
      var val1, val2;
      db.ref("test/val").once("value").then(snap => {
        val1 = snap.val();
        return db.ref("test/val").set(val1+1);
      }).then(() => {
        return db.ref("test2/val").once("value');
      }).then(snap => {
        val2 = snap.val();
        response.send(val1+", "+val2);
      }).catch(err => {
        console.log(err);
        response.send("error occurred");
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-24
      • 2017-10-10
      • 2017-09-28
      • 1970-01-01
      • 2017-08-30
      • 2018-12-22
      • 2019-07-09
      • 2018-06-29
      相关资源
      最近更新 更多