【问题标题】:Firebase: Get New Child AddedFirebase:添加新的孩子
【发布时间】:2016-09-18 02:08:22
【问题描述】:

当我的应用程序启动时,我会对 Firebase 进行初始提取以提取我的所有数据。当我稍后将数据添加到我的 Firebase 时,我只希望它获取已添加的新子节点。

我目前正在这样做。有没有更好的方法,或者在 Firebase 中内置的方法可以做到这一点?

let initialFetch = false;

ref.once('value', snap => {
  // get all child data
  initialFetch = true;  
});

ref.on('child_added', (snap) => {
  if (!initialFetch) return;
  // get new child data
});

感谢任何帮助。提前致谢!

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:
    1. 如果您需要新数据和后续数据,请使用child_added。它会立即为所有现有的孩子触发,随后为任何添加的孩子触发。

    2. 如果您只想要新数据,请为您的孩子添加时间戳和ref.orderByChild('timestamp').startAt(Date.now())

    3. 如果您既需要新数据又需要后续数据,但又想以不同方式对待初始子项:像现在一样使用child_added value

    另见:How to only get new data without existing data from a Firebase?

    【讨论】:

    • 我很想使用选项 1 (child_added),但是从 Firebase 取回初始数据后,我需要从另一个 api 获取更多元数据。 .on() 是否支持承诺?
    • 一个promise只能解析一次。 Firebase 的on() 会在每次相关事件发生时触发,因此无法返回promise。如果您只关心一个值,请使用once()(它返回一个承诺)。
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2017-02-22
    • 2021-07-21
    • 2023-03-20
    • 2013-08-11
    相关资源
    最近更新 更多