为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星淼淼 2021-06-10 15:25:03
我正在按照文档在 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 类中没有无参数构造函数。我在这里不知所措,因为这是我能找到的唯一文档。有没有人成功实施过这个并知道我在这里可能会遗漏什么?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

正如错误消息所说,您的 Shard 类没有无参数构造函数。JavaBean 类型类必须有一个无参数构造函数,以便它被不能完全理解其他构造函数做什么的代码实例化。因此,您应该在代码中添加一个无参数构造函数:


public class Shard {

    int count;


    public Shard() {}  // this constructor has no arguments


    public Shard(int count) {

        this.count = count;

    }

}

如果没有该构造函数,Firestore SDK 就无法以可预测的方式创建Shard.


查看完整回答
反对 回复 2021-06-10
  • 1 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信