更新:简而言之,我想使用万能钥匙,因为我需要与当前用户一起编写另一个用户对象,但是我不想覆盖所有安全性,我只想在一个函数中使用它。 this question中可接受的答案提供了一个很好的起点,但是我无法使其正常工作。这是此问题中的最后一个代码块。我有两个分离的功能。第一个是纯Objective-c,它从currentUser的firstRelation中删除​​用户。直到我将不同的CloudCode函数添加到不同的视图控制器之前,它运行良好,没有任何问题。 CloudCode函数使用主键,将currentUser添加到otherUser的sampleRelation并将otherUser添加到currentUser的sampleRelation(firstRelation和sampleRelation是类)。所以问题是当我从User的currentUser中删除​​一个用户(与当前用户)时,我的应用程序崩溃了,因为该用户必须通过logIn或signUp进行身份验证。实际上我不明白这一点,因为在这种情况下,我是用firstRelation而不是另一个用户编写currentUser的,所以它必须能够正常工作(并且在CloudCode之前工作)。我几乎可以肯定这是因为我将主密钥与CloudCode一起使用,但是不知道如何避免使用它。其他所有内容仍然有效,例如我可以使用currentUser上传图像。这是我用于CloudCode的代码,JavaScript对我来说是完全未知的,也许有人会看到导致问题的原因。Parse.Cloud.define('editUser', function(request, response) {Parse.Cloud.useMasterKey();var userQuery = new Parse.Query(Parse.User);userQuery.get(request.params.userId).then(function (user) { var relation = user.relation("sampleRelation"); relation.add(request.user); // chain the promise return user.save();}).then(function (user) { var currentUser = request.user; var relation = currentUser.relation("sampleRelation"); relation.add(user); // chain the new promise return currentUser.save();}).then(function () { response.success();}, function (error) { response.error(error);});});当我尝试删除对象时会崩溃:PFUser *user = [self.friends objectAtIndex:indexPath.row]; PFRelation *myFriendsRel = [self.currentUser relationForKey:@"simpleRelation"]; if ([self isFriend:user]) { for (PFUser *friendName in self.friends) { if ([friendName.objectId isEqualToString:user.objectId]){ [self.friends removeObject:friendName]; break; // to exit a loop } } // remove from parse [myFriendsRel removeObject:user]; NSLog(@"deleted: %@", user.username); } [self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (error){ NSLog(@"Error %@ %@", error, [error userInfo]); } }];这是最新的尝试,是基于Fosco从另一个问题得出的答案。它可以工作,但是与早期版本相同。 Parse.Cloud.define('editUser', 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("friendsRelation"); relation.add(currentUser); user.save(null, { useMasterKey:true}).then(function(user) { response.success(user); }, function(error) { response.error(error) }); }); 最佳答案 乍一看似乎是失败的,因为您正在尝试在迭代对象时从数组中删除该对象。我知道无论您是否使用Parse对象,这都会导致Objective C崩溃。尝试重新编写此段: for (PFUser *friendName in self.friends) { if ([friendName.objectId isEqualToString:user.objectId]){ [self.friends removeObject:friendName]; break; // to exit a loop } }对于这样的事情: NSMutableArray *tempArray = [[NSMutableArray alloc]init]; for (PFUser *friendName in self.friends) { if (![friendName.objectId isEqualToString:user.objectId]) { [tempArray addObject:friendName]; } self.friends = [NSArray arrayWithArray:tempArray];同样,只看了一眼,所以不是100%(如果这是您的问题,但看起来像这样),请告诉我是否有帮助关于javascript - Parse.com主 key 不允许写PFUser currentUser,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24632527/
10-12 01:15