2011-06-23 12 views
8

मैं फेसबुक की 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" 
     } 
    ] 
    } 
] 

समस्या है, मैं कैसे इन अप मैच के लिए पता नहीं है! तो मैं टिप्पणियों पर लूप कर रहा हूं, और इसके आगे उपयोगकर्ता के नाम के साथ प्रत्येक के पाठ को मुद्रित करना चाहता हूं। मैं उसको कैसे करू?

या, क्या ऐसा करने का एक बेहतर तरीका है?

उत्तर

10

आप इन परिणामों को लूपिंग करके टिप्पणियों पर लूपिंग कर सकते हैं और उपयोगकर्ता प्रतिक्रिया से आईडी से मिलान कर सकते हैं।

उदाहरण के लिए:

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 
      } 
     } 

    } 
+0

धन्यवाद, मुझे वही चाहिए जो मुझे चाहिए! आपने वास्तव में मेरी मदद की है - धन्यवाद। – Sharon

+0

कोई समस्या नहीं है। पुरानी आरईएसटी एपीआई कभी-कभी भ्रमित हो सकती है। –

+2

मुझे विश्वास नहीं है कि इस तरह की चीजें फेसबुक के दस्तावेज़ीकरण में इतनी चमकदार हैं। धन्यवाद! – Warpling

0

आप PHP के साथ काम करते हैं और इस समारोह के माध्यम से लूप करने के लिए टिप्पणी की एक सारिणी की जरूरत है कर रहे हैं काम में आ सकता है:

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; 
} 

की एक सारिणी का रिटर्न टिप्पणी आईडी के साथ टिप्पणी के रूप में टिप्पणियां:

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 
        ) 

      ) 

    ) 

) 
+1

नोट: 100% काम करने के लिए आपको एक * संख्यात्मक * ऑब्जेक्ट आईडी पास करनी होगी। यदि आप ऑब्जेक्ट हैं तो एक वेबसाइट यूआरएल * काम * कर सकती है, लेकिन जैसा कि मैंने पाया उतना हमेशा नहीं। ऑब्जेक्ट डीबगर के माध्यम से एक संख्यात्मक ऑब्जेक्टिड प्राप्त करने के लिए बेहतर: http://developers.facebook.com/tools/debug/og/object?q={ आपका URL यहां} यह एकमात्र * विश्वसनीय * तरीका है जो मैंने पाया एक संख्यात्मक ऑब्जेक्ट आईडी प्राप्त करने के लिए। ऑब्जेक्ट आईडी अंतिम पंक्ति पर होगी: ग्राफ़ एपीआई: \t http://graph.facebook.com/{YOUR ऑब्जेक्ट आईडी} –

संबंधित मुद्दे

 संबंधित मुद्दे