gpt4 book ai didi

ios - 聆听 Firebase 中数百名 child 添加的项目

转载 作者:可可西里 更新时间:2023-11-01 03:56:41 25 4
gpt4 key购买 nike

我有一个 iOS 市场应用程序,我在其中监听该市场上出售的每件商品的变化。更准确地说,我会倾听该项目上的 child 是否发生变化或被删除。

问题是我也想听听何时添加 child 。在 Firebase 上添加子节点时进行监听的特殊之处在于,当您首次设置监听器时,您会获得该节点上的所有兄弟节点。

项目上的子项不是同一项目的列表,所以我无法监听在某个时间戳后添加的子项。我正在考虑做 something like this并忽略那些最初的 child 。这似乎是一个很大的浪费,因为那时我基本上是从 Firebase 中获取东西两次。一次使用 FEventTypeValue,一次使用 FEventTypeChildAdded

我要收听的项目是正在加载到提要中的项目。它很可能是几百个项目,但也可能是数千个项目。

你会怎么做?我应该忘记所有关于监听添加的 child 还是有一个合适的解决方案?

编辑(添加示例代码):

这就是我在 Firebase 上获取特定项目数据的方式。

var ref = new Firebase('https://<your-Firebase>.firebaseio.com');
ref.child('listings/-KB9ZqLZBEskoUihb-yR').once('value', function(snapshot) {
listing = snapshot.val();
});

在这里我想听听何时将新 child 添加到该项目:

ref.child('listings/-KB9ZqLZBEskoUihb-yR').on('child_added', function(snapshot) {
listing[snapshot.key()] = snapshot.val()
});

问题是监听添加到该节点上的项目会再次获取所有子节点,这似乎是一种巨大的浪费。你会如何处理这种情况?

最佳答案

当然,Firebase 支持将新添加的子节点检索到特定节点。

这是 firebase documentation for retrieving data您可能会再次查看“添加的 child ”部分。我只是从那里引用一些重要的注释。

child_added is triggered once for each existing child and then again every time a new child is added to the specified path

还有这个

For ordering purposes, it is also passed a second argument containing the key of the previous child.

你也可以看看这个例子。

// If we wanted to retrieve only the data on each new post added to our blogging app, we could use child_added

// Get a reference to our posts
var ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts");
// Retrieve new posts as they are added to our database
ref.on("child_added", function(snapshot, prevChildKey) {
var newPost = snapshot.val();
console.log("Author: " + newPost.author);
console.log("Title: " + newPost.title);
console.log("Previous Post ID: " + prevChildKey);
});

仔细看看prevChildKey

所以,在这里你可以通过稍微改变你的数据库结构来实现这个技巧,即 suggested here .但是,我认为你已经有了那个订购结构。希望能帮助到你。

关于ios - 聆听 Firebase 中数百名 child 添加的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com