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

时间:2014-03-15 22:36:40

标签: javascript ios objective-c parse-platform pfrelation

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

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

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

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

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

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

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

过去2小时我一直在尝试使用上面的Parse Cloud Code链接到无法运行的任何内容,然后我意识到我的问题是实际的云代码,而不是我是怎么回事试图在xcode中使用它,因为我说我可以让它成功添加一个NSString对象用于测试目的。

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

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

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

[friendsRelation addObject:user];

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

以下是Parse Cloud Code:

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的人来说,这应该相当简单,所以我非常感谢你的帮助。

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

忘记所有先前关于一致性和规范化的要求,并设计可扩展性。

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

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

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