Parse.com relationships and acl



我有一个"place"类和一个"checkin"类,以及一个特殊的"User"类。"checkin"有一个指向"place"one_answers"user"的指针。简单地说,用户可以记录他访问了一个地方。

place类只有读权限,而checkin类有读和写权限。

当创建一个"checkin"对象时,我得到错误103:这个用户不允许在place上执行更新操作。

我尝试用关系代替指针,但仍然有同样的问题。

我不希望"place"对象是可更新的,我不明白为什么parse在内部尝试更新它。

是否知道为什么会发生这种情况,以及我如何对数据进行建模以使其按照我的期望工作?

编辑:我添加代码,使调用创建签入对象。可以看到,位置和用户已经存在,所以我不打算更新它。
let checkin = PFObject(className: "checkin")
    checkin["user"] = PFUser.currentUser()
    let place = PFObject(className: "place")
    place.objectId = shop.id
    checkin["place"] = place
    checkin.saveInBackgroundWithBlock { (saved: Bool, error: NSError?) -> Void in
        if saved && error == nil {
            success()
        } else {
            //
        }
    }

如果您不共享任何代码,则很难诊断,因为问题可能也与您在代码中尝试执行的操作有关。我不能评论澄清,所以我会把我怀疑正在发生的事情的答案贴出来。如果不是这样,请评论或编辑你的帖子,我很乐意尝试进一步帮助。

问题可能与你使用指针无关…我使用指针,没有这样的问题。

我认为发生的事情是基于您的权限,它没有让云创建适当的位置。如果你还没有检查过"创造"一个地方的能力,这绝对是正确的。我理解这个错误表明它是一个特别的更新,但我之前也有不正确/误导性的错误。如果是这种情况,允许创建。或者,如果您不希望公众能够创建位置,那么请确保当前用户具有正确的ACL,或者正在运行的云代码正在使用主密钥。

如果这些都不是您的情况,并且您不想共享代码,我可以推荐另一种解决方法。将整个类权限保留为public,以确保正确执行初始化。然后,可能在保存后的回调中,将ACL设置为无写。

Edit:下面的注释表示添加的代码

我认为您正在尝试查询具有shop.id的对象。我不太熟悉iOS编程,但iOS上的查询应该是这样的:

PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];
[query getObjectInBackgroundWithId:@"xWMyZ4YEGZ" block:^(PFObject *gameScore, NSError *error) {
    // Do something with the returned PFObject in the gameScore variable.
    NSLog(@"%@", gameScore);
}];
// The InBackground methods are asynchronous, so any code after this will run
// immediately.  Any code that depends on the query result should be moved
// inside the completion block above.
https://parse.com/docs/ios/guide

最新更新