在DatabaseReference.updateChildren()调用中设置优先级?

问题描述:

为了在我火力地堡Android应用原子数据操作,我使用的updateChildren(Map<String, Object> update)方法来设置多个值用一个命令(这样可以防止数据不一致。在DatabaseReference.updateChildren()调用中设置优先级?

在某些情况下,在写入数据我还需要设置优先顺序以便索引元素排序正确

使用'not atomic'setValue(Object value, Object priority)操作,可以写入一个值并同时设置优先级,使用updateChildren()命令不允许设置优先级

为了设置p新创建的数据的冲突,我目前在updateChildren()命令的CompletionListener中调用setPriority()。这可行,但会导致奇怪的用户界面行为(元素被添加到列表底部,并在此之后,他们移动到正确的位置)。

建议如何正确处理这个问题?

如果你正在寻找包括中updateChildren呼叫的优先级,可以通过具有在.priority结束的关键这样做:

map.put("path/to/child/.priority", 42); 

虽然在一般,没有理由仍然使用优先级。请参阅What does priority mean in Firebase?

+0

嗨,弗兰克,感谢您的快速反应,我已将问题扩展到更多细节。请看一看。 – Peter

+0

我发布的代码显示了如何在'updateChildren()'调用中更新项目的优先级。尽管我可以进一步用'orderByValue()'或'orderByChild()'替代优先级,这可能是一个单独的问题。在那里:发布完整的信息,因为你现在的询问方式很难超出我已经完成的工作。提供您想要加载或操作的最小JSON(如文本,而不是屏幕截图)以及如何加载或操纵它的代码片段。 –

+0

我已经创建了一个专用于此主题的新问题:[如何在FirebaseRecyclerAdapter中使用orderByChild或orderByValue](http://*.com/questions/39561612/how-to-use-orderbychild-or-orderbyvalue-in- A-firebaserecycleradapter) – Peter