2013-01-10 51 views
2

我試過"SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() LIMIT 100",它返回我81而不是100個職位,然後我試着"SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() LIMIT 50",並期待它返回50個職位,因爲第一個查詢返回81,但結果只包含43個帖子。想知道LIMIT是如何工作的。FQL流不返回定義的職位數量限制

此外,created_time並不適合我, "SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() AND created_time > 1262196000 LIMIT 100"返回81個帖子,而"SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() AND created_time > 1262196000"只返回5.任何想法?

回答

5

是的,這是正常的。 Facebook執行您的FQL並返回與您的查詢匹配的所有帖子。在這種情況下,有100個職位。

然後 Facebook將您的應用不可見的帖子過濾掉。這是基於演員的隱私設置。 stream表中沒有visible_to_me字段,它允許您預先篩選結果。

如果您需要100個帖子,請輸入200,然後顯示前100個。大多數情況下,您會在結果中獲得至少100個帖子。

如果查詢stream沒有LIMIT,您將獲得高達近50個職位或過去30天的項目,取其少

作爲獎勵,對於您的created_time查詢,如果您在UNIX時間戳中未考慮到(我沒有),則可以使用strtotime()在FQL中創建時間戳。它分析與PHP strtotime()函數相同的字符串。

+2

https://developers.facebook.com/blog/post/478/解釋這 – Igy

+0

啊,謝謝你的答案和鏈接! – Jia