1

我将 Parse.com 与我的 iPhone 应用程序一起使用。

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

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

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

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

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

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

在过去的 2 个小时里,我一直在使用我链接到的上述 Parse Cloud 代码尝试一切,但无法正常工作,然后我意识到我的问题出在实际的云代码上,而不是我尝试使用的方式它在 xcode 中,因为就像我说的那样,我可以让它成功添加一个 NSString 对象用于测试目的。

我的问题是我不懂javascript,也不懂语法,所以我不知道如何更改用javascript编写的云代码。

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

我在objective-c中用来做这件事的代码是:

[friendsRelation addObject:user];

所以我很确定这与将对象添加到数组中是一样的,但就像我说的那样,我不知道如何修改 Parse Cloud 代码,因为它是在 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 的人来说,这应该相当简单,所以我非常感谢您的帮助。

谢谢你。

4

1 回答 1

3

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

在用户类中存储关注可以很容易地找到一个人在关注谁。但是,您将如何解决找到所有关注您的用户的任务?如果您处于他们的追随者关系中,则必须检查所有用户。那将不是一个有效的查询,并且它不能很好地扩展。

在规划社交应用程序时,您应该构建可扩展性。我不知道您正在构建什么样的社交应用程序,但想象一下,如果该应用程序一发不可收拾并迅速取得成功。如果你不为可扩展性而构建,它很快就会分崩离析,你就有可能失去一切,因为应用程序突然变得迟缓,因此无法使用(人们对等待移动应用程序的容忍度几乎为零)。

忘记之前所有关于一致性和规范化的优先事项,并为可扩展性进行设计。

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

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

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

于 2014-03-17T07:47:33.820 回答