Firebase pop()与push()相反?

Mir*_*iro 3 firebase

我想实现一个堆栈(队列),许多用户可以推送()到很多可以popo()的FILO方式.

是否有相当于pop()检索/删除列表的最后一项的方法?

例如:

var popRef = firebaseRef.pop();
Run Code Online (Sandbox Code Playgroud)

Mic*_*uer 6

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

我们在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()"(默认情况下,我们将获取最后一项).