我正在使用Parse.com和我的iPhone应用程序。
我之前遇到了一个问题,当时我试图将当前登录的用户添加到另一个用户的PFRelation键/列"friendsRelation“中,这基本上就是好友列表。
唯一的问题是,除了当前登录的用户之外,您不允许将更改保存到任何其他用户。
然后,我了解到,您可以使用Parse代码中的“主键”来解决这个问题。
最后,我将这里的代码添加到我的Parse代码中:https://stackoverflow.com/a/18651564/3344977
这很好用,我可以成功地测试它,并将一个NSString添加到Parse数据库中的字符串列/键中。
但是,我不知道如何修改PFRelation,让我将一个用户添加到另一个用户的PFRelation列/键中。
在过去的两个小时里,我一直在尝试使用我链接到的上面的Parse,但是它无法工作,然后我意识到我的问题在于实际的云代码,而不是我试图在xcode中使用它的方式,因为就像我说的那样,我可以让它成功地为测试目的添加一个NSString对象。
我的问题是我不知道javascript,也不理解语法,所以我不知道如何更改用javascript编写的云代码。
我需要编辑上面链接到的PFRelation,我还将在这个问题的末尾粘贴到下面,这样我就可以将当前登录的PFUser对象添加到另一个用户的PFRelation键/列中。
我在目标-c中使用的代码是:
[friendsRelation addObject:user];因此,我很确定这与向数组中添加一个对象是一样的,但是正如我所说的,我不知道如何修改Parse,因为它在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在xcode中使用它:
[PFCloud callFunction:@"editUser" withParameters:@{
@"userId": @"someuseridhere",
@"newColText": @"new text!"
}];现在只需修改它,就可以将当前的PFUser添加到另一个用户的PFRelation列/键中,我很确定这在技术上只是向数组中添加一个对象。
对于熟悉javascript的人来说,这应该相当简单,所以我非常感谢您的帮助。
谢谢。
发布于 2014-03-17 07:47:33
我建议您重新考虑您的数据模型,并从用户表中提取以下内容。当您计划一个数据模型时,特别是对于一个NoSQL数据库,您应该首先考虑您的查询,并围绕它规划您的结构。对于移动应用程序来说尤其如此,因为服务器连接成本很高,如果应用程序执行了大量连接,通常会导致延迟问题。
在user类中存储以下内容可以很容易地找到一个人的跟随者。但是,你如何解决寻找所有跟随你的用户的任务呢?你必须检查所有的用户,如果你是在他们的关系。这将不是一个有效的查询,也不会很好地扩展。
在规划一个社交应用程序时,您应该为可扩展性构建。我不知道你在开发什么样的社交应用,但是想象一下,如果这款应用变得疯狂,并迅速获得成功的话。如果你没有为可伸缩性而构建,它很快就会崩溃,你有机会失去一切,因为应用程序突然变得迟钝,因此无法使用(人们对等待移动应用程序几乎没有任何容忍度)。
忘记了以前所有关于一致性和规范化以及可伸缩性的设计。。
为了存储跟随者和追随者,对这两个类中的每一个使用单独的“表”(Parse类)。对于每个用户,存储他们所遵循的所有用户名(或他们的objectId)的数组。对追随者也要这样做。这意味着当您选择跟踪某人时,需要更新两个表:将另一个用户的用户名添加到您所跟踪的用户的数组中(在下面的表中),并且还将您的用户名添加到其他用户的追随者表的数组中。
使用这种方法,获得追随者和跟随者的列表是非常快的。
请看一下Cassandra数据库Twitter的这个示例实现:https://github.com/twissandra/twissandra
https://stackoverflow.com/questions/22430652
复制相似问题