2014-09-30 3 views
1

그래프 API를 사용하여 게시 된 그림에 댓글을 달거나/me 사용자가 게시 한 그림을 좋아하는 사용자의 프로필 사진을 보려면 facebook을 쿼리하고 있습니다. jsonpath : 두 경로를 섞음

  • 내가 문제가 충분히 깊은 곳에서 데이터를 얻는 데 하나 개의 쿼리에서 그것을 할 : 는 나도 노력하고 있어요.
  • 또는 하나 개의 쿼리에서 하위 쿼리

의 양을 최소화 :이은 (는 주석 사용자의 세부 사항을 제공하지 않습니다) 작동하지 않습니다

me/photos/uploaded?fields=from,images,comments.picture,likes.picture&limit=500 

과는 차원을 지정하면 오류가 발생합니다 :

me/photos/uploaded?fields=from,images,comments.picture,likes.picture.type(large)&limit=500 

내가 문서에 명시 적으로 아무것도 발견 havent 한하지만, 당신이 지정할 수 있습니다 얼마나 깊은에 관한 제한이있는 것 같습니다. (이는 큰 놀라움이 거의 없도록 간결입니다)

때문에, 종속성이 작동하지만

myphotos => me/photos/uploaded?fields=created_time,name,id,from,comments.summary(1).limit(100),images,likes.summary(1).limit(100)&limit=500 
userinfo_photocomments => ?ids={result=myphotos:$.data.*.comments.data.*.from.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000) 
userinfo_photolikes => ?ids={result=myphotos:$.data.*.likes.data.*.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000) 

으로 쿼리를 일괄 처리하는 해결, 사실 난 하나 또는 최대에 그것을 할 방법을 찾을 수 없습니다 있음 2 개의 쿼리가 나를 괴롭게합니다. 특히 마지막 2 개의 하위 쿼리 결과가 겹칠 가능성이 높습니다.

jsonpath 앵커를 혼합하여 마지막 두 쿼리를 결합 할 수있는 방법을 찾고 싶습니다. 문제는 의견 작성자와 사용자의 userid가 나무의 다른 깊이에있는 것으로 보입니다.

나는 모든 통찰력에 대해 감사 할 것입니다.

답변

1

첫 번째 쿼리의 결과를 두 번 사용하여 두 쿼리 만 사용할 수 있어야한다고 생각합니다. 단지 두 가지 user_ids 다시 받고 결과

GET /?ids={user_id1},{user_id2},{user_id1} 

을 : 그것은 다음과 같은 중복 user_id을 필터링하는 경우

은 내가 ?ids= 엔드 포인트를 테스트했다.

그래서,이 다음 배치 쿼리에서 산출 :

curl \ 
    -F 'access_token={access_token}' \ 
    -F 'batch=[{ "method":"GET","name":"myphotos","relative_url":"me/photos/uploaded?fields=created_time,name,id,from,comments.summary(1).limit(100),images,likes.summary(1).limit(100)&limit=500",},{"method":"GET","relative_url":"?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=id,name,updated_time,picture.redirect(0).type(large).height(2000).width(2000)"}]' \ 
    https://graph.facebook.com/ 

그냥이를 테스트하기 위해 실제 액세스 토큰으로 {access_token}를 교체합니다.

기본적으로, 난 그냥 의견에 대한 user_id 목록을 연결된하고 좋아 실제로 매우 실용적인 방법이다

GET ?ids={result=myphotos:$.data.*.comments.data.*.from.id},{result=myphotos:$.data.*.likes.data.*.id}&fields=... 
+1

있다. 2 개의 쿼리로 처리되도록 해결되었습니다. 좋은 생각! –

+0

그것이 당신에게 효과적 이라니 다행입니다. 좋은 점은 FB가'user_ids'를 구별하게 만들고, 그것들을 스스로 필터링 할 필요가 없다는 것입니다. – Tobi

+0

글쎄요, 또 다른 캐치가 있습니다. 첫 번째 쿼리에서 많은 그림이 나오면 페이지 매김이 생깁니다. 그리고 그 때문에 ID는 조인 된 결과 페이지에서 중복됩니다 ... –