我对 Facebook 的 fql.multiquery 方法感到困惑。
我正在尝试检索一篇帖子的所有评论,然后是每个评论的用户信息。我可以毫无问题地获得评论,但我很难获得用户。
目前我正在使用以下内容:
FB.api({
method: 'fql.multiquery',
queries: {
query1: 'SELECT post_fbid, fromid, text, time FROM comment WHERE post_id="'+postID +'"',
query2: 'SELECT id, name, url, pic FROM profile WHERE id IN (SELECT fromid FROM #query1)'
}
},
function(response) {
}
})
这给了我以下响应:
[
{
"name": "query1",
"fql_result_set": [
{
"post_fbid": "xxxxx",
"fromid": user1id,
"text": "Here's a comment",
"time": 1308579931
},
{
"post_fbid": "xxxxx",
"fromid": user2id,
"text": "Another comment",
"time": 1308580031
}
]
},
{
"name": "query2",
"fql_result_set": [
{
"id": user1id,
"name": "User 1 name",
"url": "User 1 url",
"pic": "User 1 pic"
},
{
"id": user2id,
"name": "User 2 name",
"url": "User 2 url",
"pic": "User 2 pic"
}
]
}
]
问题是,我不知道如何匹配这些!所以我循环浏览评论,并想打印每条评论的文本,旁边有用户名。我该怎么做?
或者,有更好的方法吗?
最佳答案
您可以通过遍历评论并将 fromid 与用户响应中的 id 匹配来匹配这些结果。
例如:
var comments = response[0].fql_result_set;
var users = response[1].fql_result_set;
//loop through the comments
for(var i = 0, j = comments.length; i<j; i++){
for(var x = 0, y = users.length; x<y; x++){
if(comments[i].fromid == users[x].id){
//we have a match, this comment is from user users[x]
//process users[x]
//break the inner for loop, since we already have a match
}
}
}
关于javascript - 如何使用 FB FQL 多查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459292/