2016-08-16 12 views
0

これはPARSE REST APIの質問です。 Parse REST APIを使用して解析サーバーに照会するためにjsonを送信する必要があります。 jsonは "$ or"という名前の2つのキーを含む必要があります。最初のキー/値は無視され、2番目のキー/値がサーバーによって使用されます。辞書には同じ名前のキーが2つありません。私はドキュメントを見てかなり時間を費やしましたが、複数の$や何ができるかは不明です。これを回避する方法はありますか?

import json,httplib,urllib 
    connection = httplib.HTTPSConnection('api.parse.com', 443) 
    params = urllib.urlencode({"where":json.dumps({ 
      "gender": "male", 
      "$or": [ 
      { 
       "brand": "nike" 
      }, 
      { 
       "brand": "adidas" 
      } 
      ], 
      "$or": [ 
      { 
       "prim_color": "red" 
      }, 
      { 
       "prim_color": "blue" 
      } 
      ] 
     })}) 
    connection.connect() 
    connection.request('GET', '/1/classes/My_Class?%s' % params, '', { 
      "X-Parse-Application-Id": "API-ID", 
      "X-Parse-REST-API-Key": "REST-KEY" 
     }) 
    result = json.loads(connection.getresponse().read()) 
    print result 
+1

... $or条件として使用する$inを使用することができますか? –

+0

はい、両方の値が必要です。最初のキー値は、データベースのブランドフィールドを照会することです。 2番目のキー値は、カラーフィールドを照会しています。アプリケーションロジックには、両方のフィールドの結果が必要です。 – gobob

+0

APIを誤解している可能性があり、実際にはこれを必要としない可能性があります。 –

答えて

2

docに示すように、$or、必要に応じて履行に1つ以上の条件を持つ配列を受け入れる:

import json,httplib,urllib 
connection = httplib.HTTPSConnection('api.parse.com', 443) 
params = urllib.urlencode({"where":json.dumps({ 
     "gender": "male", 
     "$or": [ 
     { 
      "brand": "nike" 
     }, 
     { 
      "brand": "adidas" 
     }, 
     { 
      "prim_color": "red" 
     }, 
     { 
      "prim_color": "blue" 
     } 
     ] 
    })}) 
connection.connect() 
connection.request('GET', '/1/classes/Player?%s' % params, '', { 
     "X-Parse-Application-Id": "${APPLICATION_ID}", 
     "X-Parse-REST-API-Key": "${REST_API_KEY}" 
    }) 
result = json.loads(connection.getresponse().read()) 
print result 

編集: [OK]を、あなたは少なくとも持っていると思います1つのブランド/あなたのリストからの色。
悲しいことに、そのパーサはかなり悪いので、複雑なクエリを実行することはできません($and$orと内部で実行することもできます)。どこに演算子を埋め込むことができないのですか(これまでは$orしか実装されていません)。

とにかく、あなたは最初の値が無視されている場合は、あなたが本当にそれを送信する必要があります

import json,httplib,urllib 
connection = httplib.HTTPSConnection('api.parse.com', 443) 
params = urllib.urlencode({"where":json.dumps({ 
     "gender": "male", 
     "brand": { "$in": ["nike", "adidas"] } 
     "prim_color": { "$in": ["red", "blue"] } 
    })}) 
connection.connect() 
connection.request('GET', '/1/classes/Player?%s' % params, '', { 
     "X-Parse-Application-Id": "${APPLICATION_ID}", 
     "X-Parse-REST-API-Key": "${REST_API_KEY}" 
    }) 
result = json.loads(connection.getresponse().read()) 
print result 
+0

$が配列をとることができます。上記のコードで$または配列を使用しています。質問は、どのように$またはで2つの異なるフィールドを照会するのですか? – gobob

+0

私はこれを試してみましょう、ありがとう。 – gobob

+0

残念ながら、これはブランドとして機能しません!=ナイキやアディダスが結果に表示されます。私がやっているのは(ブランド=ナイキやアディダス、色=赤、青) – gobob

関連する問題