【发布时间】:2019-09-24 09:29:33
【问题描述】:
运行这个:
db.collection("test").doc()
.set({
value: 100
}).then(resultOrWhateverItReturns => { /*never executed*/ });
返回一个始终保持其pending 状态的承诺,因此then 分支中的代码永远不会执行(我想同样的问题也适用于catch 之一)。我看到一些people 用另一个承诺包装set 并在set 调用之后立即解决它,因此处理它就像处理同步调用一样,这看起来不正确。
有没有办法启动插入/更新命令返回有用的,即履行/拒绝的承诺?我正在使用 v.6.6.1 的 sdk。
更新 1 - Cloud Firestore 文档 suggests 以下方法对我不起作用,因为 set 返回的承诺处于待处理状态。实际数据确实会更新。
db.collection("users").doc("frank").set({
name: "Frank",
favorites: {
food: "Pizza",
color: "Blue",
subject: "Recess"
},
age: 12
}).then(function() {
console.log("Frank created");
});
【问题讨论】:
-
"which doesn't work for me" 这段代码在运行时做什么?你期望它做什么?
-
"then" 分支永远不会为我执行。数据被添加/更新,但部分从未被调用。理想情况下,我也想获得文档的自动生成 ID。 + 哥们,这里的语言不需要很聪明。
-
我并不是想在这里变得聪明,只是想提供帮助,我不清楚什么是行不通的。您使用的是哪个 SDK?浏览器中的客户端 JavaScript?还是 Node.js?
-
JS one v. 6.6.1 位于gstatic.com/firebasejs/6.6.1/firebase-firestore.js 我更新了这个问题,希望它可以解决。
-
您对收藏有写权限吗?否则,您的写作将被拒绝。如果不确定,请将
catch()子句添加到您的处理程序。.catch(function(e) { console.error(e); })。另见:jsbin.com/varegoc/2/edit?js,console
标签: firebase google-cloud-platform google-cloud-firestore