Firebase Firestore 分布式计数器文档代码崩溃

我正在按照文档在 Firebase Firestore 中创建分布式计数器,但是,他们提供的代码出现错误。


// counters/${ID}

public class Counter {

    int numShards;


    public Counter(int numShards) {

        this.numShards = numShards;

    }

}


// counters/${ID}/shards/${NUM}

public class Shard {

    int count;


    public Shard(int count) {

        this.count = count;

    }

}

运行他们定义的 createCounter 方法时


public Task<Void> createCounter(final DocumentReference ref, final int numShards) {

    // Initialize the counter document, then initialize each shard.

    return ref.set(new Counter(numShards))

            .continueWithTask(new Continuation<Void, Task<Void>>() {

                @Override

                public Task<Void> then(@NonNull Task<Void> task) throws Exception {

                    if (!task.isSuccessful()) {

                        throw task.getException();

                    }


                    List<Task<Void>> tasks = new ArrayList<>();


                    // Initialize each shard with count=0

                    for (int i = 0; i < numShards; i++) {

                        Task<Void> makeShard = ref.collection("shards")

                                .document(String.valueOf(i))

                                .set(new Shard(0));


                        tasks.add(makeShard);

                    }


                    return Tasks.whenAll(tasks);

                }

            });

}

即使我序列化这些类,当我增加计数器时,我仍然在他们的代码中得到一个异常


Shard shard = transaction.get(shardRef).toObject(Shard.class);

编译器抱怨 Shard 类中没有无参数构造函数。


我在这里不知所措,因为这是我能找到的唯一文档。有没有人成功实施过这个并知道我在这里可能会遗漏什么?


繁星淼淼
浏览 226回答 1
1回答

白猪掌柜的

正如错误消息所说,您的 Shard 类没有无参数构造函数。JavaBean 类型类必须有一个无参数构造函数,以便它被不能完全理解其他构造函数做什么的代码实例化。因此,您应该在代码中添加一个无参数构造函数:public class Shard {&nbsp; &nbsp; int count;&nbsp; &nbsp; public Shard() {}&nbsp; // this constructor has no arguments&nbsp; &nbsp; public Shard(int count) {&nbsp; &nbsp; &nbsp; &nbsp; this.count = count;&nbsp; &nbsp; }}如果没有该构造函数,Firestore SDK 就无法以可预测的方式创建Shard.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java