首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用来自FB FQL多查询的结果?

如何使用来自FB FQL多查询的结果?
EN

Stack Overflow用户
提问于 2011-06-24 03:02:24
回答 2查看 6K关注 0票数 8

我被Facebook的fql.multiquery方法搞糊涂了。

我正在尝试检索一个帖子上的所有评论,然后检索每个评论的用户信息。我可以毫无问题地获得评论,但我在获得用户方面遇到了问题。

目前,我正在使用以下内容:

代码语言:javascript
复制
  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) {
  }
})

这给了我以下响应:

代码语言:javascript
复制
[
  {
    "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"
      }
    ]
  }
]

问题是,我不知道如何匹配这些!因此,我循环遍历注释,并希望打印每个注释的文本,并在其旁边显示用户名。我该怎么做?

或者,有没有更好的方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-24 03:26:57

您可以通过循环遍历评论并将fromid与来自用户响应的id进行匹配来匹配这些结果。

例如:

代码语言:javascript
复制
    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
             }
        }

    }
票数 10
EN

Stack Overflow用户

发布于 2013-01-07 14:03:25

如果您正在使用PHP,并且需要一个注释数组来循环遍历,那么这个函数可能会派上用场:

代码语言:javascript
复制
public function getComments($objectID){
    $user = $comment =array();
    $q1 = "/fql?q=".urlencode("SELECT  id, fromid, text, time , likes FROM comment WHERE object_id ='$objectID' ");
    $res = $this->api($q1);
    $com = $res['data'];

    $q2 = "/fql?q=".urlencode("SELECT uid, name, username, pic_small, current_location FROM user WHERE uid IN (SELECT fromid FROM comment WHERE object_id ='$objectID' )");
    $res = $this->api($q2);
    $usr = $res['data']; 

    foreach($usr as $k=>$v){
        $user[$v['uid']] = $v;
    }
    foreach($com as $cmnt){
        $comment[$cmnt['id']] = $cmnt;
        $comment[$cmnt['id']]['user'] = $user[$cmnt['fromid']];
    }
     return $comment;
}

返回以commentID为键的单个注释数组:

代码语言:javascript
复制
Array(

[137194739772009_249649] => Array
    (
        [id] => 137194739772009_249649
        [fromid] => 1454592211
        [text] => Brilliant!
        [time] => 1357450854
        [likes] => 1
        [user] => Array
            (
                [uid] => 1454592211
                [name] => Jo Payne
                [username] => jo.payne.127
                [pic_small] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/203035_1454592211_505092710_t.jpg
                [current_location] => Array
                    (
                        [city] => Pascoe Vale
                        [state] => Victoria
                        [country] => Australia
                        [zip] => 
                        [id] => 107340732634422
                        [name] => Pascoe Vale, Victoria, Australia
                    )

            )

    )

[137194739772009_252711] => Array
    (
        [id] => 137194739772009_252711
        [fromid] => 1734247348
        [text] => testing
        [time] => 1357531321
        [likes] => 0
        [user] => Array
            (
                [uid] => 1734247348
                [name] => Andreas Lustig
                [username] => andreaslustigcom
                [pic_small] => http://profile.ak.fbcdn.net/hprofile-ak-snc6/275058_1734247348_2025403101_t.jpg
                [current_location] => Array
                    (
                        [city] => Melbourne
                        [state] => Victoria
                        [country] => Australia
                        [zip] => 
                        [id] => 116190411724975
                        [name] => Melbourne, Victoria, Australia
                    )

            )

    )

)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6459292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档