gpt4 book ai didi

android - 没有连接时不调用插入/删除文档回调的 Firestore 数据库

转载 作者:行者123 更新时间:2023-11-29 02:34:39 25 4
gpt4 key购买 nike

我正在 Android 上尝试使用 firestore 数据库。

这是我插入文档的代码:

public Observable<Post> createPost(final Post post){


return Observable.create(new Observable.OnSubscribe<Post>() {
@Override
public void call(final Subscriber<? super Post> subscriber) {

try{

DocumentReference documentReference = getCollection().document();

post.setId(documentReference.getId());
documentReference.set(post).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {

subscriber.onNext(post);
subscriber.onCompleted();

}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
subscriber.onError(e);
subscriber.onCompleted();
}
});


}catch (Exception ex){

subscriber.onError(ex);

Log.e(LOG_TAG, ex.getMessage(), ex);

}

}
});


}

文档被插入到数据库中,但是 onSuccess 和 onFailure 回调都没有被调用。

更新1


  1. 问题有时不一致,有时会在一个小时后调用回调,有时会在 3 小时后调用等等。

  2. 当没有互联网连接时会发生这种情况。

更新2

  1. 已报告问题 here它是关闭的。我不确定如何保证离线创建的数据的正确性。

最佳答案

您的代码似乎没有任何问题,也许可以尝试 onCompleteListener 回调。所以添加

.addOnCompleteListener((Task<Void> task) -> {
if(task.getException() != null) {
emitter.onError(task.getException());
}
if(task.isComplete()) { //try task.isSuccessful() if this is what you are looking for
emitter.onComplete();
}
});

如果这可能无法解决您的问题,请使用像这样的发射器:

Completable completable$ = Completable.create((CompletableEmitter emitter) -> {
firebaseFirestore.collection(collection).document(document)
.delete()
.addOnSuccessListener((Void aVoid) -> emitter.onComplete())
.addOnFailureListener((Exception e) -> emitter.onError(e))
.addOnCompleteListener((Task<Void> task) -> {
if(task.getException() != null) {
emitter.onError(task.getException());
}
if(task.isComplete()) { //try task.isSuccessful()
emitter.onComplete();
}
});
});
return completable$;

关于android - 没有连接时不调用插入/删除文档回调的 Firestore 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47771007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com