更新Firebase中所有文档中的字段



我是Firebase的新手,不知道如何更新一个集合中所有文档中的同一字段。

return db.collection('collection').get().then((snapshot) => {
return snapshot.forEach((doc) => {
doc.update({'field': 1});

});
})
.catch((err) => {
console.log('Error getting documents', err);
});

我正在firebase函数中运行此代码。没有任何错误,但什么都没有发生。我在文档中看不到任何关于这个特定问题的内容。有人知道怎么了吗?

您需要将所有update()调用的结果返回给调用者,否则它无法知道所有异步操作何时完成:

return db.collection('collection').get().then((snapshot) => {
return Promise.all(snapshot.documents.map((doc) => {
return doc.ref.update({'field': 1});
}));
});

变化:

  1. return来自update()的promise,以便它可以冒泡到Cloud Functions容器中
  2. 使用map,这样我们就可以得到一系列承诺
  3. 然后使用Promise.all,这样我们只有在所有更新完成后才能完成(从而终止云功能(

这种方法对我来说很好……不知道这是否是一种正确的方法(正如我所说的,我是一个初学者(

exports.scheduledFunction2 = functions.pubsub.schedule('every 1 minutes').onRun((context) => {
return db.collection("collection")
.get()
.then(querySnapshot => {
if (!querySnapshot.empty) {
for(let i =0;i<querySnapshot.size;i++){
var queryDocumentSnapshotTest = querySnapshot.docs[i];

queryDocumentSnapshotTest.ref.update({'counter':1});
}


return null;

} else {
// do nothing
console.log("No document corresponding to the query!");
return null;
}
});



});

相关内容

  • 没有找到相关文章

最新更新