这是我的代码,可以在特定节点上迭代并累加值
exports.onAddToCart = functions.database.ref('/users/user_cart/{uid}').onWrite((change, context) =>{
const item = change.after.val();
const userId = context.params.uid;
const servicePath = admin.database().ref('/services/' + item);
return servicePath.once('value').then(snapshot =>{
if(!snapshot.hasChildren()) {
return null;
}
let totalPrice = 0;
snapshot.forEach(function(child){
totalPrice += child.val().price;
});
return admin.database().ref('/users/user_cart/' + userId + '/total').set(totalPrice);
});
});
不幸的是,即使按照文档的说明来做,我也无法使它正常工作(我想呢?)。我收到此错误...
我哪里出错了?
答案 0 :(得分:1)
这是说您的函数需要返回一个布尔值。现在它什么也没返回:
snapshot.forEach(function(child){
totalPrice += child.val().price;
});
forEach()
的API文档说,动作处理程序可以返回true来取消迭代,因此如果您不想取消,则可能要返回false:
snapshot.forEach(function(child){
totalPrice += child.val().price;
return false;
});