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": "Relation",
"className": "_User"
},
"createdAt": {
"__type": "Date",
"iso": "2015-09-10T17:29:03.181Z"
},
"sessionToken": "r:KkmTu7xRjTEFpl0vcANVf0xXH",
"updatedAt": {
"__type": "Date",
"iso": "2015-09-10T17:29:03.181Z"
},
"username": "bogdan12",
"objectId": "BmbNRxCyau"
}
Relation JSON
{
"__type": "Relation",
"className": "_User"
}
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With