保存从查询中提取的用户的属性(即不在currentUser上)
我有兴趣根据currentUser
执行的操作将属性保存到数据库中的用户。 基于下面的代码,我得到错误消息“用户不能被保存,除非他们已经通过login或注册validation”
NSString *IDToFetch = @"some_id"; PFQuery *query = [PFUser query]; [query whereKey:@"user_id" equalTo:IDToFetch]; PFUser *foundUser = (PFUser *)[query getFirstObject]; foundUser[@"new_column"] = @"Some text"; [foundUser saveEventually]; //here an exception is thrown
我想知道是否有一个解决这个问题,我可以保存属性foundUser
用户,而不必login该用户。 谢谢你的帮助!
如果要更新当前不是当前login用户的用户,则需要使用master-key
调用Parse。
例如,您可以从CloudCode执行此操作;
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) }); });
并从你的iOS项目调用它;
[PFCloud callFunction:@"editUser" withParameters:@{ @"userId": @"someuseridhere", @"newColText": @"new text!" }];
确定提供这个答案,但基本上不build议! 我认为在一天结束的时候,云代码路线更清洁。 但是,这可以说更容易..
您可以创build另一个与每个用户配对的表。
例如。
表名
user_extra_details
领域
用户
得分了
所以其他用户可以在user_extra_details上编辑这个特定的字段
但是,如果您怀疑这可能导致大量额外的查询,但这不是不可能的,只是…不方便。 因此,您将如何访问您设置的数据。
PFQuery *userQuery = [PFQuery queryWithTable:@"Users"]; [userQuery whereKey:Some Key equalTo:some value]; PFQuery *userDetails [PFQuery queryWithTable:@"user_extra_details"]; [userDetails whereKey:@"User" inQuery:userQuery]; [userDetails includeKey:@"User"]; [userDetails fetch];
你不得不刁钻的是,重复的细节对象显然会创build多个结果。 所以我build议做一个删除并插入vs做更新的extra_detail对象,以帮助打击任何错误的重复。