gpt4 book ai didi

Firebase pop() 与push() 相反?

转载 作者:行者123 更新时间:2023-12-02 19:57:22 28 4
gpt4 key购买 nike

我想实现一个堆栈(队列),许多用户可以以 FILO 方式将其推送(),并且许多用户可以从中弹出()。

是否有与 pop() 等效的方法来检索/删除列表的最后一项?

例如:

var popRef = firebaseRef.pop();

最佳答案

这是非常可行的,但有点棘手。由于您将有多个用户尝试删除项目,因此您必须处理多个用户尝试删除同一项目的情况(这实际上是一个分布式系统问题)。想必您只希望一名用户成功。解决方案是使用事务来确保只有一个用户可以成功删除特定项目。

我们在 github 上有一个“工作队列”示例,与您正在寻找的内容非常相似:https://github.com/firebase/firebase-work-queue

它和你要求的最大区别在于它是 FIFO 而不是 FILO。要将其更改为 FILO,您需要修改 workqueue.js 中的这一行:

queueRef.startAt().limit(1).on("child_added", function(snap) {

那里的 .startAt() 告诉它从列表的开头获取第一个项目(即最旧的项目)。要获取列表中的最后一项(即最新项),您可以将“startAt()”更改为“endAt()”,或者完全省略“startAt()”(默认情况下我们将获取最后一项)。

关于Firebase pop() 与push() 相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14672954/

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