在数据库中的某个位置写入内容时执行以下代码。
我对此代码的期望: 如果硬币数量为=> 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
});
答案 0 :(得分:1)
我刚认识到而不是
在
我应该使用
一旦
所以,替换
.on(“value”,
与
。一旦( “值”,
解决了这个问题。