запуск "соединения", такого как FQL, для получения имени пользователя в новостных лентах - PullRequest
3 голосов
/ 16 января 2012

Я пытаюсь получить все сообщения в ленте новостей для конкретного пользователя, используя FQL, используя следующую инструкцию FQL:

SELECT post_id, actor_id, target_id, message, created_time, updated_time, permalink, description 
FROM stream 
WHERE filter_key in 
(SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed')
AND is_hidden = 0 AND created_time > xxx

Но мне нужно имя пользователя (имя и фамилия) каждогоПользователь, который сделал сообщение, которое появляется в моей ленте новостей (имя пользователя, совпадающее с "actor_id").

Кажется, я не могу использовать операцию соединения в FQL, и я не хотел бы запускать операцию выбораза каждый пост в моей ленте новостей (могут быть десятки дополнительных звонков в виде: «ВЫБЕРИТЕ uid, имя ОТ пользователя, ГДЕ uid =»).

Есть ли способ преодолеть это?

Ответы [ 2 ]

4 голосов
/ 17 января 2012

Вам нужно использовать FQL Multi-Query , чтобы получить два набора результатов: первый из потока и второй от пользователя. Затем для каждого результата в первом ищите actor_id во втором.

0 голосов
/ 08 мая 2013

Ваш запрос должен выглядеть следующим образом:

 NSString *query =
    @"{"
    @"'friends':'SELECT post_id,actor_id,target_id,message,created_time, likes, comment_info FROM stream WHERE source_id IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND created_time > 1  ORDER BY created_time DESC LIMIT 50',"
    @"'friendinfo':'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT actor_id FROM #friends)',"
    @"}";

Надеюсь, это поможет. :)

...