Facebook FQLпроблема с использованием javascript sdk - PullRequest
0 голосов
/ 21 марта 2012

Привет всем,

я делаю следующий запрос, чтобы получить статус пользователя:

FB.api(
    {
        method: 'fql.query',
        query: 'SELECT message FROM statuses WHERE uid = ' + userId
    },
    function(data) {
        //    do something with the response
    }

);

Отлично работает, когда число результатов больше 0.

но при отсутствии результатов функция обратного вызова вообще не вызывается.

Мне нужно знать, есть ли 0 строк, возвращающихся из этого запроса, есть ли способ сделать это?

Спасибо:)

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Прежде всего, таблица statuses не существует .Вам следует использовать таблицу status.

Обратный вызов всегда вызывается, но вы должны правильно проверить пустых объектов .Просто вставьте это в Javascript Test Console :

<fb:login-button scope="read_stream">
    Grant access to statuses
</fb:login-button>

<button onclick="getStatuses()">Get Statuses</button>
<script>
window.getStatuses = function() {
    FB.api(
    {
        method: 'fql.query',
        query: 'SELECT message FROM status WHERE uid = me() AND time < 315532800'
    },
    function(data) {
        if(!isEmpty(data)) {
            for(var key in data) {
                var obj = data[key];
                console.log(obj['message'])
            }
        } else {
            console.log("data is empty")
        }
    });
};

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}
</script>

Здесь я проверяю статусы до 01.01.1980, чтобы убедиться, что возвращается пустой результат,В вашей консоли вы должны отметить ответ data is empty.

0 голосов
/ 21 марта 2012

Если по запросу нет результатов, вы должны получить пустой массив.

Кроме того, нет таблицы FQL с именем «status», это «status».

...