我正在按照文档在 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 类中没有无参数构造函数。
我在这里不知所措,因为这是我能找到的唯一文档。有没有人成功实施过这个并知道我在这里可能会遗漏什么?
白猪掌柜的
相关分类