【问题标题】:Retrieve data from firebase and Unique key从 Firebase 和唯一键中检索数据
【发布时间】:2018-02-21 07:49:03
【问题描述】:

我会从 firebase 数据库中检索数据。这是我的数据库的架构

datatable-18f93
  -L5pD-jh_Xpqq6bq2eDS
    text: "HELEO"
  -L5pDT-IpB4BsFMiABv_
    text: "HELEO"
  -L5pPwXnuTsSXN9pXpJ5
    text: "popopo"

我已经创建了一个获取数据的路径

router
  .route("/")
  .get(function (req, res, err) {
    console.log("test", req.body)

    // Get a database reference to our posts
    var db = admin.database();
    var ref = db.ref("/");

    // Attach an asynchronous callback to read the data at our posts reference
    ref.on("value", function (snapshot) {
      console.log(snapshot.val())
      res.send(snapshot.val());

    }, function (errorObject) {
      console.log("The read failed: " + errorObject.code);
    });
  });

这条路线也在打印唯一键

{ '-L5pD-jh_Xpqq6bq2eDS': { text: 'HELEO' },
  '-L5pDT-IpB4BsFMiABv_': { text: 'HELEO' },
  '-L5pPwXnuTsSXN9pXpJ5': { text: 'popopo' } }

我想要的只是没有 id 的对象。我怎么能得到那个? 这是一个例子

{ text: 'HELEO' },
{ text: 'HELEO' },
{ text: 'popopo' }

【问题讨论】:

  • 对于一次性请求,您应该使用 once() 而不是 on()。现在,您正在设置一个侦听器,该侦听器将随着数据库中的每一次更改而被重复调用。这很糟糕。
  • 谢谢,但我会做一个实时待办事项列表,所以我认为我应该使用 on()
  • 不要使用 on()。这不会使请求比一次()更快。请花一些时间了解 on() 和 once() 之间的区别。您会看到,对于必须在最后终止的一次性请求,once() 更有意义。

标签: javascript node.js firebase express


【解决方案1】:

您需要遍历快照并将 obj 元素推送到新数组中

ref.once("value", function (snapshot) {
    var list = [];
    snapshot.forEach(function(elem) {
        list.push(elem.val());
    });
    res.send(list);
}, function (errorObject) {
  console.log("The read failed: " + errorObject.code);
});

【讨论】:

  • 您应该使用 once() 而不是 on()。请参阅我对这个问题的评论。
  • 我在数据库中发帖时出现错误:can't set header after they are sent 在线,错误在该行:res.send(list)
  • 您使用一次还是一次?
猜你喜欢
  • 2020-04-10
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2020-08-08
  • 2016-04-22
相关资源
最近更新 更多