2015-03-18 3 views
0

У меня есть класс Друга и класс Дружбы на Parse.com. Класс дружбы имеет 2 столбца с именем «Friend1» и «Friend2», которые представляют отношения и являются указателями на класс «Друг».parse.com сортировать вложенный запрос

Я хочу найти 20 самых старых друзей. Так что я пытаюсь вложенный запрос, как это в скор:

var queryInner = PFQuery(className: "Friend") 
queryInner.orderByDescending("Age") 

var queryOuter = PFQuery(className: "Friendship") 
queryOuter.whereKey("Friend2", matchesQuery: queryInner) 
queryOuter.whereKey("Friend1", equalTo: PFObject(withoutDataWithClassName:"Friend", objectId: friendId)) 
queryOuter.includeKey("Friend2") 
queryOuter.limit = 20 

queryOuter.findObjectsInBackgroundWithBlock{ 
//handling 
} 

Он получает 20 друзей, но они не сортируются по убыванию возраста. Это проблема разбора? проблема с моим запросом? Спасибо!

+0

Я считаю, что это синтаксический анализ проблемы, см. [This] (http://stackoverflow.com/questions/21184263/in-parse-com-cloud-code-how-to-sort-records-by-its -child-table), где кто-то пытался сделать что-то похожее. Одна вещь, которую я мог бы предложить, заключается в том, чтобы использовать ваш внутренний запрос как основной запрос, а ваш внешний запрос - внутреннее. Из одной из двух ссылок: «Вы можете сортировать запрос только по свойствам объекта, который запрашивается сам». Таким образом, обращаясь к запросам, вы можете быть в состоянии упорядочить по возрасту! –

+0

Да, вроде облом, что он не поддерживается изначально. Легкая работа заключается в том, чтобы отсортировать результат самостоятельно после завершения запроса. – danh

+0

спасибо за указателей. действительно, это немного разочаровывает, что Парс не делает этого, в то время как он делает так много замечательных вещей. я попробую несколько вариантов и отчитаюсь здесь. –

ответ

2

Итак, ребята, как вы сказали, сортировка по вложенным запросам не поддерживается Parse. В соответствии с вашими предложениями я вижу два возможных альтернативных подхода:

1/добавление поля «Возраст» в класс Дружбы, который относится к возрасту Friend2 (таблица отношений является однонаправленной); и просто сделайте мой запрос по этому классу. Поле «Возраст» регулярно обновляется фоновым процессом. меньше работы во время выполнения

2/сначала, найдите всех друзей, затем отсортируйте результат. вероятно, больше работы во время выполнения, когда число друзей растет. не уверен, насколько точно. Кроме того, я считаю, что максимальное количество элементов, возвращаемых одним синтаксическим анализом, равно 1000; поэтому, если у кого-то есть больше друзей, дополнительные друзья не будут восстановлены. не супер масштабируемым.

Я думаю, что я закончу реализацию 1 /, если только у какого-нибудь parse pro нет рекомендаций в последнюю минуту! :)

Смежные вопросы