使用Parse Cloud Code将用户添加到PFRelation

我正在使用Parse.com和我的iPhone应用程序。

之前我遇到了一个问题,我试图将当前登录的用户添加到另一个用户名为“friendsRelation”的PFRelation键/列中,该列基本上是朋友列表。

唯一的问题是,除了当前登录的用户之外,不允许将更改保存到任何其他用户。

然后我了解到,使用Parse Cloud Code的“主密钥”可以使用一种解决方法。

我最后在这里将代码添加到我的Parse Cloud Code: https : //stackoverflow.com/a/18651564/3344977

这很好用,我可以成功测试它并将NSString添加到Parse数据库中的字符串列/键。

但是,我不知道如何修改Parse Cloud Code以允许我将用户添加到另一个用户的PFRelation列/密钥。

在过去的两个小时里,我一直在尝试使用上面的Parse Cloud Code链接并且无法正常工作,然后我意识到我的问题在于实际的云代码,而不是我如何使用它在xcode中,因为我说我可以让它成功添加一个NSString对象用于测试目的。

我的问题是我不懂javascript而且不懂语法,所以我不知道如何更改用javascript编写的Cloud Code。

我需要编辑上面链接的Parse Cloud Code,我将在下面的问题末尾粘贴,以便我可以将当​​前登录的PFUser对象添加到另一个用户的PFRelation键/列。

我将在objective-c中使用的代码是:

[friendsRelation addObject:user]; 

所以我很确定它只是添加一个对象到一个数组,但就像我说我不知道​​如何修改Parse Cloud Code,因为它是在javascript中。

这是解析云代码:

 Parse.Cloud.define('editUser', function(request, response) { var userId = request.params.userId, newColText = request.params.newColText; var User = Parse.Object.extend('_User'), user = new User({ objectId: userId }); user.set('new_col', newColText); Parse.Cloud.useMasterKey(); user.save().then(function(user) { response.success(user); }, function(error) { response.error(error) }); }); 

接下来我将使用objective-c在xcode中使用它:

 [PFCloud callFunction:@"editUser" withParameters:@{ @"userId": @"someuseridhere", @"newColText": @"new text!" }]; 

现在只需要修改它就可以将当前的PFUser添加到另一个用户的PFRelation列/键,我非常确定在技术上只是将一个对象添加到一个数组中。

对于熟悉javascript的人来说,这应该相当简单,所以我非常感谢你的帮助。

谢谢。

我建议您重新考虑您的数据模型,并从用户表中提取以下内容。 当您规划数据模型时,尤其是NoSQL数据库时,您应该首先考虑您的查询并围绕它来规划您的结构。 对于移动应用程序尤其如此,因为服务器连接成本很高,并且如果您的应用程序执行大量连接,通常会引入延迟问题。

在用户类中存储以下内容可以轻松找到一个人关注的对象。 但是,您如何解决找到所有关注您的用户的任务? 如果您处于以下关系,则必须检查所有用户。 这不是一个有效的查询,它不能很好地扩展。

在规划社交应用程序时,您应该为scalabilty构建。 我不知道你正在构建什么样的社交应用程序,但想象一下这个应用程序是否具有弹道并且成为一个快速增长的成功。 如果你没有为可伸缩性而构建,那么它很快就会崩溃,而且你有机会失去一切,因为应用程序突然变得迟钝而因此无法使用(人们对等待移动应用程序的容忍度几乎为零)。

忘掉以前关于一致性和规范化的所有优点,并设计可伸缩性。

对于存储以下内容和关注者,请为这两者中的每一个使用单独的“表”(Parse类)。 对于每个用户,存储他们遵循的所有用户名(或其objectId)的数组。 为追随者做同样的事情。 这意味着当您选择关注某人时,需要更新两个表:您将其他用户的用户名添加到您关注的人的数组中( 在下表中),并且还将您的用户名添加到其他用户的数组中粉丝表。

使用此方法,获取关注者和关注列表的速度非常快。

看看这个Cassandra NoSQL数据库的Twitter示例实现: https : //github.com/twissandra/twissandra