【发布时间】:2022-01-06 14:44:28
【问题描述】:
我有一个从外部来源提取一些数据的云后台功能。然后这些数据应该存储在 Firestore 文档中。但它从未被存储。文档不变。这是我的代码:
public class MyFunction implements BackgroundFunction<PubSubMessage> {
@Override
public void accept(PubSubMessage message, Context context) {
// pulling data from external source
MyClass myObject = getData();
// db is the Firestore object and was initialized earlier
CollectionReference colRef = db.collection(MY_COL);
DocumentReference docRef = colRef.document(MY_DOC);
ApiFuture<WriteResult> future = docRef.set(myObject);
ApiFutures.addCallback(future,
new ApiFutureCallback<WriteResult>() {
@Override
public void onFailure(Throwable throwable) {
logger.log(Level.SEVERE,
"Failed to Update Object to Firestore", throwable);
}
@Override
public void onSuccess(WriteResult writeResult) {
logger.info("Update Object Document ... DONE");
}
}, Runnable::run);
}
}
来自onFailure 和onSuccess 的日志永远不会出现在 Firebase 信息中心的日志中。感觉就像函数在写过程完成之前就终止了。日志中没有错误,并且成功从外部源中提取数据。
如何确保函数在写入过程完成之前不会终止?
【问题讨论】:
-
如果这些方法都没有被调用,那么你确定你有互联网连接吗?
-
非常确定。数据通过 HTTP 调用来自外部源。该函数也在 Google Cloud 中运行。
-
您将来可能需要调用 get() 。见stackoverflow.com/questions/60968336/…
标签: java firebase google-cloud-firestore google-cloud-functions