Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse CloudCode function not working. I get an error when calling it

The CloudCode function is:

Parse.Cloud.define('addFriend', function(request, response) {
   var userId = request.params.userId;

   var User = Parse.Object.extend('_User'),
       user = new User({ objectId: userId });

   var currentUser = request.user;

   var relation = user.relation("Friends");
   relation.add(currentUser);

   Parse.Cloud.useMasterKey();
   user.save().then(function(user) {
       response.success(user);
   }, function(error) {
    response.error(error)
   });
});

When I call it from Xcode with PFCloud call.... I get the next error in my console:

[Error]: ReferenceError: parent is not defined
at e.n.value (Parse.js:13:7510)
at main.js:10:14 (Code: 141, Version: 1.8.2)

This means the actual problem is that the relation has no parent. It should already have the 'user' variable as a parent because I'm calling user.relation("Friends") , that's what the docs are saying : "You rarely should set manually the parent because as you are most probably going to call Parse.Object.relation('key')." which is what I am doing.

UPDATE

Even this code is giving the same error :

 Parse.Cloud.define("addFriend", function(request, response) {
    Parse.Cloud.useMasterKey();

    var currentUser = request.user;
    var relation = currentUser.relation("Friends");
    relation.add(currentUser);
});

UPDATE 2:

User JSON

{
   "FriendRequests": {
    "__type": "Relation",
    "className": "_User"
},
   "Friends": {
    "__type": "R‌​elation",
    "className": "_User"
},
"createdAt": {
    "__type": "Date",
    "iso": "2015-09-10T17:29‌​:03.181Z"
},
"sessionToken": "r:KkmTu7xRjTEFpl0vcANVf0xXH",
"updatedAt": {
   "__type": "Dat‌​e",
   "iso": "2015-09-10T17:29:03.181Z"
 },
 "username": "bogdan12",
 "objectId": "BmbNRxCyau‌​"

}

Relation JSON

{
    "__type": "Relation",
    "className": "_User"
}
like image 738
Bogdan Pop Avatar asked Apr 21 '26 18:04

Bogdan Pop


1 Answers

Try replacing :

var User = Parse.Object.extend('_User'),
    user = new User({ objectId: userId });

With :

    user = new Parse.User.createWithoutData(userId);

EDIT :

It works fine with me... Here is what I tried :

Cloud :

Parse.Cloud.define('addFriend', function(request, response)
{
    var currentUser = request.user;
    var userId = request.params.userId;
    var user = new Parse.User.createWithoutData(userId);

    var relation = user.relation("Friends");
    relation.add(currentUser);

    Parse.Cloud.useMasterKey();
    user.save().then(function(user) {
        response.success(user);
    }, function(error) {
        response.error(error)
    });
});

Client :

[PFCloud callFunctionInBackground:@"addFriend" withParameters:@{@"userId":@"s8BMHtnqSZ"} block:^(id object, NSError *error) {
    if (!object || error) {
        LogError(error, @"Calling addFriend failed.");
    } else {
        LogInfo(@"Calling addFriend succeeded.");
    }
}];

Maybe you should file a bug report here : https://www.parse.com/help

like image 154
deadbeef Avatar answered Apr 24 '26 08:04

deadbeef



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!