我想实现一个堆栈(队列),许多用户可以推送()到很多可以popo()的FILO方式.
是否有相当于pop()检索/删除列表的最后一项的方法?
例如:
var popRef = firebaseRef.pop();
Run Code Online (Sandbox Code Playgroud)
这是非常可行的,但有点棘手.由于您将有多个用户尝试删除项目,因此您必须处理多个用户尝试删除相同项目的情况(这实际上是分布式系统问题).大概你只想让一个用户成功.解决方案是使用事务来确保只有一个用户可以成功删除特定项目.
我们在github上有一个"工作队列"示例,它与您正在寻找的内容非常相似:https://github.com/firebase/firebase-work-queue
它与你要求的最大区别在于它是FIFO而不是FILO.要将其更改为FILO,您需要从workqueue.js修改此行:
queueRef.startAt().limit(1).on("child_added", function(snap) {
Run Code Online (Sandbox Code Playgroud)
.startAt()告诉它从列表的开头抓取第一个项目(即最旧的项目).要获取列表中的最后一项(即最新项),您可以将"startAt()"更改为"endAt()"或完全省略"startAt()"(默认情况下,我们将获取最后一项).
| 归档时间: |
|
| 查看次数: |
2250 次 |
| 最近记录: |