【发布时间】:2017-12-06 04:31:23
【问题描述】:
所以我在一个用户页面上,我想让用户创建一个帖子,但在服务器端进行扇出。
exports.fanoutUpdatePost = functions.database.ref('/post/{postKey}').onWrite(event => {
var post = event.data.val();
var fanoutObject = {};
fanoutObject['/user-post/'+post.userKey+'/post/'+event.params.postKey] = post;
fanoutObject['/blog-post/'+post.blogKey+'/post/'+event.params.postKey] = post;
return event.data.adminRef.root.update(fanoutObject);
});
我这样做是为了让您可以在/post/ 上发帖,服务器将自动扇出。
问题是我希望客户端显示进度条,直到它保存在 /user-post/ 中。
但是在/post/ 上创建帖子后,我的客户端回调会立即触发。
public void addPost(final PostDao post, ProgressBar progressBar) {
progressBar.setVisibility(View.VISIBLE);
String key = mDatabase.child(“post”).push().getKey();
Map<String, Object> postUpdateMap = new HashMap<>();
postUpdateMap.put(“/post/” +key, post.toMap());
mDatabase.updateChildren(postUpdateMap, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if(databaseError == null){
Log.e(TAG, databaseError);
}else{
// @@@@@ This executes before server side
// @@@@@ cloud function fanoutUpdatePost
// @@@@@ finishes. Can I make this happen
// @@@@@ after it?
}
}
});
}
有没有办法等到我的 onWrite 云函数完成?
【问题讨论】:
标签: java android firebase google-cloud-functions