我有一个应用程序,用户可以对照片进行投票,然后转到下一个。我需要知道最有效的策略来跟踪用户已经投票的照片,因此他不会两次出现相同的照片。
我目前的策略是在每个用户个人资料中保留一个包含所有已投票照片ID的数组。然后,我获取新照片,并确保他们的ID不匹配数组中的任何ID。
我不认为这是正确的策略,因为数组应该包含有限数量的项目....在这种情况下,用户可以查看大量图像。
我不认为创建一个每个投票都有一个条目的课程是不合适的。
Parse.com文档中提供了几个关于"关系"但我真的不确定要选择的人:
1)跟踪用户看到的照片 2)获取除
之外的新照片如果您知道最好的方法,请告知。我在iOS swift /但这个问题与语言无关。
答案 0 :(得分:1)
我终于按照建议建立了照片和用户之间的关系:
var query = PFQuery(className:"Photos")
query.getObjectInBackgroundWithId(objectId) {
(photoEntry: PFObject!, error: NSError!) -> Void in
if error != nil {
NSLog("%@", error)
} else {
var relation = photoEntry.relationForKey("UsersThatVoted")
relation.addObject(PFUser.currentUser())
photoEntry.saveInBackgroundWithBlock {
//Rest of the query
其中" UsersThatVoted"是照片'中的关系字段。 class,链接到Parse默认Users类。每次用户对照片投票时都会触发此操作。
然后,很容易定期查询以排除与当前用户相关的那些照片,因此他不会看到同一张照片的两倍:
query.whereKey("UsersThatVoted", notEqualTo: PFObject(withoutDataWithClassName:"_User", objectId:me.objectId))
我是当前用户。您只需将此行添加到常规查询(在我的案例中为“照片”),您甚至不需要进行第二次内部查询。