因此,无论何时创建新销售,我都试图更新项目余额,因此我正在侦听该销售的创建,并获取所有项目以检查新销售和项目之间的匹配ID,并更新其余额
功能已部署,但项目余额没有任何变化
export const itemsBalance = functions.firestore
.document("sales/{id}")
.onCreate((snap, context) => {
//get sale data and items data
const data = snap.data();
//get all items
let myItems;
firebase.firestore().collection('items').get()
.then(snapshot => {
myItems = snapshot.docs.map(doc => doc.data());
data.items.forEach((element, index) => {
let updatedItem = myItems.find(el => el.id == element.id);
if(updatedItem) {
updatedItem.balance = updatedItem.balance - element.qty;
}
firebase.firestore().collection(`items/${element.id}`)
.doc().update(updatedItem)
.then(res => console.log(res))
.catch(err => console.log(err));
})
})
.catch(err => {
console.log(err)
})
return data;
});
package.json
"dependencies": {
"firebase-admin": "^7.3.0",
"firebase-functions": "^2.3.0"
}
答案 0 :(得分:0)
您不会返回一个承诺,当所有异步工作完全完成后,该承诺就会解决。您需要接受从update()返回的所有promise,将它们推入数组,然后在该数组上使用Promise.all()生成一个新的promise,该promise将在所有工作完成后解决。从函数返回那个承诺。
另请参阅: