遍历Firebase节点语法错误?

时间:2018-08-12 04:59:35

标签: typescript firebase firebase-realtime-database google-cloud-functions

这是我的代码,可以在特定节点上迭代并累加值

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);

});

});

不幸的是,即使按照文档的说明来做,我也无法使它正常工作(我想呢?)。我收到此错误...

enter image description here

我哪里出错了?

1 个答案:

答案 0 :(得分:1)

这是说您的函数需要返回一个布尔值。现在它什么也没返回:

snapshot.forEach(function(child){
    totalPrice += child.val().price;
});

forEach()的API文档说,动作处理程序可以返回true来取消迭代,因此如果您不想取消,则可能要返回false:

snapshot.forEach(function(child){
    totalPrice += child.val().price;
    return false;
});