firebase-admin从ver5.2更改为5.10使得我的代码无法正常工作

时间:2018-08-02 23:20:30

标签: firebase-admin

大约一年前,在儿子为我获得的项目编写了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以及如何使用它的很多信息。如果有人链接到文档,我将尝试阅读并了解如何进行更改。谢谢

1 个答案:

答案 0 :(得分:0)

使用setValueAsync(),它返回一个Future,然后在Future上等待。更改的主要内容是SDK不再使用Task API进行异步操作。您可以在这里找到更多详细信息:https://medium.com/google-cloud/firebase-asynchronous-operations-with-admin-java-sdk-82ca9b4f6022