fql ошибка получения списка друзей - PullRequest
1 голос
/ 30 января 2012

Вот мой запрос:

 fql?q=SELECT uid, name, pic_square, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

а вот и ошибка:

(#604) Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://developers.facebook.com/docs/reference

Вот код js:

var query = encodeURI("SELECT uid, name, pic_square, sex FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())");
    FB.api('fql?q=' + query, function(response) {
        console.dir(response);
        if(! jQuery.isEmptyObject(response)&& ! jQuery.isEmptyObject(response.data)) {
            var maleList = $('#male-list');
            var femaleList = $('#female-list');
            for (var friend in response.data) {
                var item = STValentines.buildFriendItem(friend);
                if (friend.sex === 'male')
                    maleList.append(item);
                else
                    femaleList.append(item);
            }
        }
    });

Это общая проблема? Могу ли я что-нибудь с этим сделать? Есть ли прогулка? спасибо за помощь

1 Ответ

1 голос
/ 30 января 2012

Это может быть проблема экранирования символов.
Вы должны попробовать использовать метод escape() в своем запросе FQL
, прежде чем передать его в JavaScript SDK:

var escapedFQLQuery = escape('SELECT uid, name, pic_square, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())');
//escapedFQLQuery now is : "SELECT%20uid%2C%20name%2C%20pic_square%2C%20sex%20FROM%20user%20WHERE%20uid%20IN%20%28SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20%3D%20me%28%29%29"
FB.api(
  {
    method : 'fql.query',
    query  : escapedFQLQuery
  });
...