現在、facebook api にクエリを実行して、2 つの fql クエリを使用してバッチ リクエストを介してデータを取得しようとしています。
クエリの 1 つは、次の形式で一連のアルバム ID をフェッチします。
Select aid FROM album WHERE ...
もう 1 つは、見つかったアルバムの写真を取得しようとします。
SELECT ... FROM photo WHERE aid IN ({result=album_ids:$.*.aid})
「album_ids」は最初のクエリの名前です。
ほとんどの場合、これは完全に機能しますが、アルバムに '_' を含むエイドが付いていることがあります。これは、ドキュメンテーションでエイドが文字列として指定されているため、まったく問題ありません。ただし、2 番目のクエリの jsonpath は、facebook API に従って ID を引用していません。
Parser error: unexpected '_xxxxx' at position xx
...
SELECT ... FROM photo WHERE aid IN (10000xxxxxxxxxx_xxxxx)
最初のクエリの json の結果には、明らかにそれらが引用されています。
[{\"aid\":\"xxxxxxxxxxxxxxxxxxx\"},{\"aid\":\"10000xxxxxxxxxx_xxxxx\"},...]
ここに何かが欠けているのでしょうか、それとも明らかに文字列であっても、2 番目のクエリで id を引用するために facebook が誤ってスキップしますか? facebook-api と jsonpath の仕様を見る限り、これは機能するはずです。
または、これを期待どおりに動作させるための回避策はありますか? (クライアント側で引用を行い、2 つの別々の要求を使用する場合を除く)。
現在、ここで提案されているようにクエリを変更しようとしています: Quoting/escaping jsonpath elements for in clause ofdependent fql queries しかし、クエリ自体を完全に再構築しない方法があるかもしれません。