Search code examples
parse-platformparse-cloud-code

why save event is not working in cloud code?


Find my code below which working very fine. but only problem facing by me is that save event is not working for me.Also you can see my log file in the picture. In each method i tried success and error function which working fine as you can see in picture. I tried this code alot but still... it is not working for me. It always shows error message.

Code :
Parse.Cloud.afterSave("HouserDetailed", function(request, response) 
{
    var obj = request.object.id;
    //console.log(obj);
// code !   
    var houserdetailed = new Parse.Object("HouserDetailed");
    var query = new Parse.Query("HouserDetailed");
    query.equalTo("objectId", obj);
    query.first({
  success: function(results) {
    //alert("updates objectId "  +request.object.id + " " + "input" + " "+ request.object.bet_title );
    var bet_title = results.get("bet_title");
    var match_id = results.get("match_id");
    var level_coin = results.get("level_coin");
    if(bet_title !== "false")
    {
    console.log("bet_title :- "+bet_title+", match_id:- "+match_id+", level_coin:- "+level_coin);
    // nested query
    var better = new Parse.Object("Better");
    var query1 = new Parse.Query("Better");
    query1.equalTo("match_id", match_id);
    query1.first({
        success: function(result){
          var bet_title_better =  result.get("bet_title");
          var user_id =  result.get("user_id");
          var bet_OnNoOfticket =  result.get("bet_OnNoOfticket");
          var bet_price =  result.get("bet_price");
          var money_got = bet_OnNoOfticket * bet_price;
          console.log("bet_title_better :-"+bet_title_better);
          if(bet_title !== bet_title_better)
          {
              console.log("Condition does not match!");
          }
          else
          {
              console.log("Condition match!" + "money got :- "+money_got);
                // checking for existing user in parse DB
                var wallet = new Parse.Object("Wallet");
                var query2 = new Parse.Query("Wallet");
                query2.equalTo("user_id", user_id);
                query2.first({
                success: function(result)
                {
                    console.log("User found");
                    var wallet_coins_number =  result.get("wallet_coins_number");
                    var objectId =  result.get("objectId");
                    total_amount = +wallet_coins_number + +money_got;
                    console.log("Total amount got :- " + total_amount );
                    // saving amount in wallet
                    var Wallet = Parse.Object.extend("Wallet");
                    var wallet = new Wallet();
                    wallet.set("user_id", user_id);
                    wallet.set("wallet_coins_number", total_amount);
                    wallet.save(null, {
                    success: function(wallet){
                        console.log("amount saved in wallet!");
                    },
                    error: function(wallet)
                    {
                        console.log("amount not saved in wallet!");
                    }

                    });

                },
                error: function(error)
                {
                    console.log("User not found");
                }
                });

          }

    },error: function(error)
    {

    }
    });
    }
    // nested query end


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

// code !
});][1]][1]

Solution

  • I don't see any log, probably it would tell you what is wrong. But you are attempting to save existing ParseObject with dirty objectId, which is bad idea. You are not allowed to change objectId of existing object. Try to remove wallet.set("objectId", objectId) from your code.

    You should not use result.get("objectId") either, use result.id instead.