Javascript 使用until参数调用Facebook新闻提要(me/home),每次连续调用返回limit/2
这是我的代码的精简版本(没有初始化调用)。一切都运行得很好,除了我在FB.api中传入一个until值的每个连续调用都会返回limit/2。我试着在两次通话之间用不同的Facebook账户等上一分钟,但这并没有起到任何作用 我检查了返回对象中的下一个参数,URL只是添加了与我的dataUltimoPost数字完全相同的until参数。当我调用URL时,它也会返回一半的帖子 我发现其他帖子的返回和返回不一致,但没有一篇直接涉及分页方面。巧合的是,我遇到了一个使用与我的代码相同的逻辑来分页帖子的程序。所以我认为我走对了方向 职能:Javascript 使用until参数调用Facebook新闻提要(me/home),每次连续调用返回limit/2,javascript,facebook-graph-api,pagination,Javascript,Facebook Graph Api,Pagination,这是我的代码的精简版本(没有初始化调用)。一切都运行得很好,除了我在FB.api中传入一个until值的每个连续调用都会返回limit/2。我试着在两次通话之间用不同的Facebook账户等上一分钟,但这并没有起到任何作用 我检查了返回对象中的下一个参数,URL只是添加了与我的dataUltimoPost数字完全相同的until参数。当我调用URL时,它也会返回一半的帖子 我发现其他帖子的返回和返回不一致,但没有一篇直接涉及分页方面。巧合的是,我遇到了一个使用与我的代码相同的逻辑来分页帖子的程序
function getPost (success, append) {
var params = { limit: 25, date_format: 'U' };
if (append)
params.until = dataUltimoPost;
FB.api('/me/home', 'get', params, function (userData) {
if (userData.data.length > 0)
dataUltimoPost = userData.data[userData.data.length - 1].created_time - 1;
success.call(this, userData.data, append);
});
};
function fillPost(posts, append) {
var postsHTML = '';
append = append === true;
alert('posts.length: ' + posts.length + ' - append: ' + append);
}
getPost(fillPost); //returns 25
getPost(fillPost, true); //returns 12
getPost(fillPost, true); //returns 1 or 0
调用函数:
function getPost (success, append) {
var params = { limit: 25, date_format: 'U' };
if (append)
params.until = dataUltimoPost;
FB.api('/me/home', 'get', params, function (userData) {
if (userData.data.length > 0)
dataUltimoPost = userData.data[userData.data.length - 1].created_time - 1;
success.call(this, userData.data, append);
});
};
function fillPost(posts, append) {
var postsHTML = '';
append = append === true;
alert('posts.length: ' + posts.length + ' - append: ' + append);
}
getPost(fillPost); //returns 25
getPost(fillPost, true); //returns 12
getPost(fillPost, true); //returns 1 or 0
这里有一篇来自Facebook自己的博文,解释了为什么你在索要25个结果时没有得到25个结果 在这里,他们明确承认,他们的FQL过滤机制在应用过滤之前预先限制了结果集。这是正在发生的事情的视觉效果
谢谢你的链接,我也读过这篇文章。然而,问题是它并没有限制基于过滤器的我。但是在使用until/limit时做了一些奇怪的事情。例如,如果我将limit设置为25并执行代码,我将收到以下计数25,12,7,0;总共44人。但是如果我将限制设置为11,我会得到11,11,9,总共31个。因此,如果只是简单地过滤,我应该收到相同的总数。对吗?Facebook承认通过API进行搜索不是正常的做法。知道过滤和限制以错误的顺序发生,您可以很快看到#s可能会关闭。如果许多排除的结果位于结果集的开头,则显示图像。所以在你看来,结果是从5月1日开始的,而实际上结果是从4月26日开始的,但它很早就把事情删掉了。使用不同的限制进行查询将产生不同的结果。见鬼,即使是完全相同的查询运行x次,也可能会产生不同的结果(stackoverflow上有很好的文档记录)。请理解,在使用Till的限制时,仍然会觉得有问题。具体地说,正如我的例子中所说的,通过减小极限值,我得到了一个不同的总数。顺便说一句,尽管它可能是不一致的,但我第一次给它打电话的时候,我总是得到我的极限。是的,它出了很大的问题。请参阅Facebook公开承认其过滤和限制结果集的错误、非标准方法的博客文章。在那篇博客文章里没关系。