我正在按照https://firebase.google.com/docs/firestore/manage-data/add-data的指导原则写信给Firestore,并设置merge:true
选项,但是,这不会返回承诺吗?因此,我们无法在启用此标志的情况下链接.then()
或.catch()
。
我们如何确定它已经完成设置/合并操作?
谢谢
答案 0 :(得分:0)
将{merge: true}
选项与set()
方法一起使用不会改变该方法在返回值方面的行为。如documentation中所述,方法返回一个Promise :
返回:非null包含无效内容的Promise。一旦解决的诺言 数据已成功写入后端。 (请注意,不会 离线时解决)。
因此,除非您处于离线状态,否则可以很好地执行以下操作:
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
},
{merge: true})
.then(function() {
// ->>> Here you can be sure that "it has completed the set/merge operation"
console.log("Document successfully written!");
})
.catch(function(error) {
console.error("Error writing document: ", error);
});