在另一个用户中插入一个 ObjectId - 解析和 Swift

insert an ObjectId in another user - Parse and Swift

我目前正在尝试将 objectId 保存到另一个用户的数组中。不幸的是,我收到一个错误。这是我尝试过的:

let name = (PFUser.currentUser()!["FirstName"] as! String) + " " + (PFUser.currentUser()!["LastName"] as! String)

let News = News(title: "\(name) accepted your ...", user: PFUser.currentUser()!)

News.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in

    if (success){

        let user = self.interest.user as! User
        user.joinNews(News.objectId!)

    } else {
        print("--------")
    }
})

这是我为此创建的 func joinNews :

public func joinNews(newsId: String) {
    newsIds.insert(newsId, atIndex: 0)

    saveInBackgroundWithBlock { (success, error) -> Void in
        if error != nil {
            print("\(error!.localizedDescription)")
        }
    }
} 

在此先感谢您的帮助!

User 对象具有特殊的安全性:它只能由用户自己更新,这就是您收到错误 "User cannot be saved unless they have been authenticated via logIn or signUp"

的原因

如果您希望当前用户的操作修改另一个用户对象,您需要使用云代码功能,并使用 Parse 主密钥来覆盖此安全性。

这看起来像:

Parse.Cloud.define("addNewsToUser", function(request, response) {
  Parse.Cloud.useMasterKey();
  var user = new Parse.User();
  user.id = request.params.userId;
  user.fetch().then(function(object) {
    // modify the user here

    return user.save();
  }).then(function() {
    response.success(user);
  }, function(error) {
    response.error(error.message);
  });
});