[英]Update a field from all documents in 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 function 中運行此代碼。 沒有錯誤,但什么也沒有發生。 我在文檔中看不到有關此特定問題的任何內容。 有誰知道出了什么問題?
您需要將所有update()
調用的結果返回給調用者,否則它無法知道所有異步操作何時完成:
return db.collection('collection').get().then((snapshot) => {
return Promise.all(snapshot.documents.map((doc) => {
return doc.ref.update({'field': 1});
}));
});
變化:
update()
return
promise 以便它可以冒泡到 Cloud Functions 容器。map
以便我們獲得一系列承諾。Promise.all
以便我們僅在所有更新完成后才完成(並因此終止 Cloud Function)。這種方法為我做了這件事......不知道這是否是正確的方法(正如我所說的我是初學者)
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;
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.