大约一年前,在儿子为我获得的项目编写了android应用程序的建议下,我开始将firebase用于项目。我们能够弄清楚如何执行一些基本请求,并且一切正常。我注意到firebase-admin的版本发生了很大的变化(我使用的是5.2,现在的最新版本是6.3,当我在开发环境中尝试代码时感到惊讶,它无法正常工作,而且我找不到有关更改的详细文档。这是我的代码的一部分,该代码适用于5.2版,但不适用于5.11(或6.3)版。
ValueEventListener eventListener;
eventListener = jobRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot technicianSnaps : dataSnapshot.getChildren()) {
if (!technicianSnaps.getKey().equals("filler")) {
for (DataSnapshot serviceRequestsSnap : technicianSnaps.getChildren()) {
for (DataSnapshot srSnap : serviceRequestsSnap.getChildren()) {
if (srSnap.child("Date").getValue() == null){
jobRef.child(technicianSnaps.getKey()).child(serviceRequestsSnap.getKey()).child(srSnap.getKey()).setValue(null);
}
所以基本上我想删除在firebase中设置不正确的记录,而我试图将值设置为null。一切都设置正确,当我更改为5.2版时,它会删除记录,但是在5.11版中,它会退出循环。似乎不建议使用setValue(Object value)方法,其他方法已将其替换-setValue(Object Value,CompletionListener侦听器)。我找不到有关如何设置CompletionListener以及如何使用它的很多信息。如果有人链接到文档,我将尝试阅读并了解如何进行更改。谢谢
答案 0 :(得分:0)
使用setValueAsync()
,它返回一个Future
,然后在Future
上等待。更改的主要内容是SDK不再使用Task
API进行异步操作。您可以在这里找到更多详细信息:https://medium.com/google-cloud/firebase-asynchronous-operations-with-admin-java-sdk-82ca9b4f6022