根据这个问题Why do my Firebase 'child_added' events show up out-of-order?,Firebase似乎没有对所有客户在同一订单中看到添加到列表的任何人都没有表现出来。有没有办法强制Firebase使用严格的排序,只有在服务器确认后才能看到本地事件?
答案 0 :(得分:0)
这些项目可能无序,因为它是一个实时分布式系统。如果多个记录到达服务器,它们的密钥或优先级可能会导致它们在已添加的记录之前插入。将此数字乘以100个用户,这些用户都在本地计算机上处于不同状态的数据中运行,并且在列表中移动或移位时排序是流动的。
但是,您可以使用value
事件获取数据的“快照”,并使用forEach按顺序迭代项目以保证订单。
var fb = new Firebase(URL);
// obtain a snapshot of data
fb.once('value', function(snap) {
// iterate the values in order
snap.forEach(function(childSnap) {
console.log(childSnap.name(), childSnap.getPriority(), childSnap.val());
});
});