【问题标题】:insert an ObjectId in another user - Parse and Swift在另一个用户中插入一个 ObjectId - Parse 和 Swift
【发布时间】:2015-12-21 11:34:23
【问题描述】:

我目前正在尝试将 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)")
        }
    }
} 

提前感谢您的帮助!

【问题讨论】:

  • 你遇到了什么错误?
  • 哦,是的,对不起,我忘记了......我的错......这里是:“捕获“NSInternalInconsistencyException”,原因是“用户无法保存,除非他们已通过登录或注册进行身份验证”“

标签: arrays string swift parse-platform insert


【解决方案1】:

User 对象具有特殊的安全性:它只能由用户自己更新,这就是为什么您会收到错误“用户无法保存,除非他们已通过登录或注册进行身份验证”

如果你想让当前用户的一个动作修改另一个用户对象,你需要使用云代码函数,并使用 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);
  });
});

【讨论】:

  • 谢谢 :) 你知道另一种制作类似于新闻提要的东西的方法吗?我的目标是创建一个带有赞按钮的帖子,每次按下此按钮时,创建帖子的用户都知道有人喜欢它。你知道怎么做吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2021-11-21
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
相关资源
最近更新 更多