【问题标题】:How to read one >>new<< item from a firebase elegantly?如何优雅地从 Firebase 中读取一个 >>new<< 项目?
【发布时间】:2015-11-19 02:00:11
【问题描述】:

我正在向页面输出成功读取的结果,因此在设置标题和发送页面之前我只进行了一次尝试。

我需要读取一个新值,它应该是在监听器启动后的某个时间创建的,换句话说,我不想阅读由于上述原因,已经存在数据。

现在,这就是我所拥有的:

let timestamp = Date.now()
fbref.limitToLast(1).on('child_added', function(snapshot) {

  if (snapshot.val().createdAt > timestamp) {
    res.send('ok') // express.js
    fbref.off()
  }

});

问题在于这不是一个优雅的解决方案,因为我需要 1) 开始收听,2) 过滤掉值并继续收听未来的项目。 3)一旦第一个真正的新项目到达,我取消订阅并输出结果。

【问题讨论】:

    标签: javascript node.js express firebase


    【解决方案1】:

    这听起来确实很可怕。这应该可以完成相同的操作并减少很多数据:

    let timestamp = Date.now()
    let newItemQuery = fbref.orderByChild('createdAt').startAt(timestamp);
    newItemQuery.on('child_added', ...
    

    【讨论】:

    • 我用的是push,所以孩子已经排好序了,没有.orderByChild可以吗?此外,我正在与听众一起发送一条初始消息,后来一个机器人创建了一个新项目,所以timestamp+1 对我来说效果更好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2010-10-03
    • 2015-12-20
    • 2019-11-15
    • 2018-10-19
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多