Найти фотографию для каждого из 10 случайных друзей Facebook в FQL?

#javascript #facebook #facebook-graph-api #facebook-fql

#javascript #Facebook #facebook-graph-api #facebook-fql

Вопрос:

Я пытаюсь выполнить множественный запрос Facebook FQL (через вызов JS SDK FB.api), чтобы загрузить по одной фотографии для каждого из 10 случайных друзей Facebook, где они были отмечены (он же «Показать 10 случайных друзей и их фотографию»). Вот мой массив запросов Javascript:

    var queries = {
            q1:"SELECT uid, name FROM user WHERE uid IN (Select uid2 from friend where uid1 = "   user_id 
                   " order by rand() limit 10) ",
            q2: "SELECT pid, subject from photo_tag where subject in (SELECT uid from #q1) limit 10",
            q3:"SELECT src from photo where pid in (SELECT pid from #q2)"};
  

Что я пытался сделать:

  1. Запрос 1: Получить идентификатор пользователя и имя 10 случайных друзей пользователя.
  2. Запрос 2: Получите идентификатор фотографии и название темы для фототегов, где идентификаторы пользователей совпадают с идентификаторами из запроса 1.
  3. Запрос 3: Выберите src изображения из фотографий, которые соответствуют фотографиям в запросе 2.

Проблема в том, что у меня нет возможности в запросе 2 выбирать ОТДЕЛЬНЫЕ записи по пользователям. То есть я не могу сказать Facebook, чтобы он возвращал только одну фотографию для каждого пользователя. Прямо сейчас это произвольно, и все 10 строк могут быть разными тегами фотографий одного и того же пользователя.

Я мог бы выполнить некоторый цикл в Javascript и сделать один запрос FQL для pic для каждого соответствующего пользователя, но это просто кажется неправильным. Есть другие предложения о том, как сделать это эффективно, предпочтительно непосредственно в FQL?

Спасибо!

Ответ №1:

Ну, я решил это некоторое время назад и закрываю это для полноты картины.

Что мне нужно было сделать, так это не делать все это одним мультизапросом. Мне пришлось СНАЧАЛА выполнить один запрос, чтобы получить несколько случайных друзей, затем выполнить множественный запрос, в котором мы загружаем случайную фотографию для каждого из этих друзей.

 FB.api(
        {
            method: 'fql.query',
            query: "SELECT uid, name FROM user WHERE uid IN (Select uid2 from friend where uid1 = "   user_id 
                   " order by rand() limit 8) "
        }, function (response) {
            var queries = {};
            for (x in response) {
                if (typeof photoArray[response[x].uid] == 'undefined') photoArray[response[x].uid] = [];
                photoArray[response[x].uid]['name'] = response[x].name;
                queries[response[x].uid] = "SELECT src_big, caption from photo where pid in (SELECT pid from photo_tag where subject ="   response[x].uid   " order by rand() limit 1) ";
            }

            FB.api(
                {
            method: 'fql.multiquery',
            queries: queries
                },
                function(response) {


                    for (y in response) {
                        if (typeof response[y].fql_result_set[0] != 'undefined') {
                            photoArray[response[y].name]['image_src'] = response[y].fql_result_set[0].src_big;
                                        // Do what you want with the pics
                        }
                    }