为什么要设置收集项目返回待处理的承诺



运行这个:

db.collection("test").doc()
.set({
value: 100
}).then(resultOrWhateverItReturns => { /*never executed*/ });

返回一个始终保持其pending状态的承诺,因此then分支中的代码永远不会执行(我想同样的问题也适用于catch(。我看到有些人用另一个承诺包装set并在set电话后立即解决它,因此处理它就像处理同步电话一样,这看起来不对。

有没有办法启动返回有用(即履行/拒绝承诺(的插入/更新命令?我正在使用 v。6.6.1SDK 的。

更新 1- Cloud Firestore 文档建议使用以下方法,该方法对我不起作用,因为set返回的承诺处于挂起状态。实际数据确实可以正常更新。

db.collection("users").doc("frank").set({
name: "Frank",
favorites: {
food: "Pizza",
color: "Blue",
subject: "Recess"
},
age: 12
}).then(function() {
console.log("Frank created");
});

为什么不直接使用 async- await ? 例如:

await db.collection('users').doc('frank').set({
name: "Frank",
favorites: {
food: "Pizza",
color: "Blue",
subject: "Recess"
},
age: 12
});

有一个这样的异步函数:

const updateFn = async (userDetails) => {}

并使用 await ?

最新更新