Firebase的云功能 - 我的代码有什么问题?

时间:2017-05-18 16:26:35

标签: firebase google-cloud-functions

在数据库中的某个位置写入内容时执行以下代码。

我对此代码的期望: 如果硬币数量为=> 500从当前硬币值中减去 500个硬币,并将一张添加到现有的故障单值。

我在现实中得到的结果: 代码递归地减去500个硬币,直到硬币值低于500;它会增加更多的门票。

请问,有人可以修改我的代码以按预期工作吗? 我不知道我做错了什么

exports.TransformCoinsIntoTickets1 = functions.database.ref('/AddTickets/{userid}').onWrite(event => {
var user = event.params.userid;


/// first get coins to see if we can lower coin value
var usercoinRef1 = admin.database().ref('coins').child(user);

usercoinRef1.on("value", function(snapshot) {
  var numberofcoins = snapshot.val();
   console.log("We are in snapshot of coins -> He has coins = " + numberofcoins);

                                          if (numberofcoins >= 500 )  
                                          return usercoinRef1.set(numberofcoins-500).then(() => {

                                           var ticketRef1 = admin.database().ref('tickets').child(user);

                                            ticketRef1.on("value", function(snap123) {
                                                  var numberoftickets = snap123.val();
 return ticketRef1.set(numberoftickets+1).then(() => {

                                                console.log('Tickets Write succeeded!');
 });

                                                        }, function (error) {
                                                           console.log("Error Tickets: " + error.code);
                                                        });

                                              console.log('Coins Write succeeded!');
                                                         });

}, function (error) {
   console.log("Error Coins: " + error.code);
});


//then we write the new coin value if we need to

 });

1 个答案:

答案 0 :(得分:1)

我刚认识到而不是

  

我应该使用

  

一旦

所以,替换

  

.on(“value”,

  

。一旦( “值”,

解决了这个问题。