从Parse获取关系用户

时间:2019-04-24 04:07:41

标签: ios swift parse-platform parse-server

我正在尝试确定当前用户是否与我的活动有关系。

换句话说,我有用户可以加入的事件。我将用户的PFRelation存储在事件表中。

我尝试过

self.event.users.query().getObjectInBackground(withId: currentUser.objectId!, block: { (object, error) in
    if let error = error {
        //The query returned an error
        print(error.localizedDescription)
    } else {
        //The object has been retrieved
        print(object)
    }
})

do {
    let user = try self.event.users.query().getObjectWithId(currentUser.objectId!)

    if user == nil {
        currentUser.saveInBackground { (success: Bool, error: Error?) in
            eventsRelation.add(object)
        }

        usersRelation.add(currentUser)
        object.saveInBackground()


    }
} catch {
    print("Unexpected error: \(error).")
}

但是这些无论如何都会返回用户。即使它们不在关系中。

就像他们在整个用户表上运行查询一样。

如何仅在子集中运行它?

1 个答案:

答案 0 :(得分:0)

答案是使用该关系进行查询。

See here for more documentation

所以代码看起来像这样:

let usersRelation = event.relation(forKey: "users")

let usersRelationQuery = usersRelation.query()

usersRelationQuery.whereKey("objectId", equalTo: currentUser.objectId!)
usersRelationQuery.findObjectsInBackground(block: { (objects: [PFObject]?, error: Error?) in
    if let error = error {
        print(error.localizedDescription)
    } else if let objects = objects {
        // The find succeeded.
        print("Successfully retrieved \(objects.count) scores.")
        // Do something with the found objects
        for object in objects {
            print(object.objectId as Any)
        }
    }
})

请注意,上面的event变量来自数据库。

如果我们不包括whereKey部分,那么它将得到那个关系中的那些。