我在Firebase托管的服务器端上使用reverseGeocoding。
如果我想在收到reverseGeocode的响应后立即将数据添加到Firestore,则它不再起作用。代码将被忽略并且不会引发错误。
googleMapsClient.reverseGeocode({
latlng: [-33.8571965, 151.2151398],
})
.asPromise()
.then((response) => {
if (response.json.status != "OK") {
console.log('Geocode error');
}else {
console.log("Geocode OK");
var db = admin.firestore();
var docRef = db.collection('medias').doc('Sydney Opera House');
console.log(docRef);
docRef.set({
test: "value stored"
})
.catch((e) => {
console.log(e);
});
}
})
.catch((err) => {
console.log("ERROR - GEOCODE", err);
});
如果我删除
docRef.set({
test: "value stored"
})
.catch((e) => {
console.log(e);
});
我在日志中得到“ Geocode OK”和 docRef 值。否则什么都没有!什么都没有存储,没有错误!
我不明白为什么只是因为我尝试在Firestore引用中设置数据,但它搞砸了一切!!!
更新
我意识到,如果我故意为该函数创建一个错误以捕获该错误,那么接下来的几行会很好地执行。
例如,如果我在dumbFunction();
之前添加var db = ...
,则它会捕获错误ERROR - GEOCODE ReferenceError: dumbFunction is not defined
,但该函数仍能很好地执行。
如何?