#ios #relational-database #parse-platform
#iOS #реляционная база данных #синтаксический анализ-платформа
Вопрос:
Я использую Parse.com и у меня есть вопрос относительно их реляционной базы данных. У меня есть класс User (класс _User по умолчанию), который в качестве одного из своих столбцов содержит массив «друзья». Этот массив друзей состоит из указателей на других пользователей.
Что я хочу сделать сейчас, так это заполнить временную шкалу в стиле Facebook, где в начале приложения я запрашиваю у моего текущего пользователя его массив друзей и его сообщений, но он также запрашивает массив друзей пользователя и их сообщения.
У меня уже есть массив друзей. Я также могу запросить своего текущего пользователя, и я могу запросить конкретного пользователя.
Мой вопрос в том, как мне эффективно запрашивать сообщения для n сообщений пользователей? Хотя я могу запрашивать конкретных пользователей 1 на 1, это становится очень медленным, если у пользователя более 100 друзей, поскольку мне нужно будет запрашивать сообщения у каждого из его друзей.
Спасибо. PS: я использую iOS.
Ответ №1:
Я предполагаю, что у вас есть Post
класс, в котором вы храните сообщения пользователей. Затем вы можете получать сообщения от нескольких пользователей, используя containedIn
PFQuery *query = [PFQuery queryWithClassName:@"Post"];
[query whereKey:@"user" containedIn:friends]; //friends is an array of users
Или вы можете использовать matchesKey. Некоторый код из любого примера:
PFQuery *followingActivitiesQuery = [PFQuery queryWithClassName:kPAPActivityClassKey];
[followingActivitiesQuery whereKey:kPAPActivityTypeKey equalTo:kPAPActivityTypeFollow];
[followingActivitiesQuery whereKey:kPAPActivityFromUserKey equalTo:[PFUser currentUser]];
followingActivitiesQuery.limit = 1000;
PFQuery *photosFromFollowedUsersQuery = [PFQuery queryWithClassName:self.className];
[photosFromFollowedUsersQuery whereKey:kPAPPhotoUserKey matchesKey:kPAPActivityToUserKey inQuery:followingActivitiesQuery];
[photosFromFollowedUsersQuery whereKeyExists:kPAPPhotoPictureKey];
Комментарии:
1. Прохладный. Я не знал о containedIn. Я попробую и сообщу об этом