2016-04-11 11 views
0

私は現時点でpython-firebaseで作業しています。以前はJavaScriptとFirebaseで作業していました。 JSにはref.on('child_added')がありましたが、私はpython-firebaseと同じことを探しています(ノードが追加されるたびにfirebaseをチェックする必要がありますので、このようなものが必要です)。python-firebaseは追加時にアイテムを取得します

これをどのように正確に行うことができますか?

答えて

1

(これはPython APIがそのフードの下にあるものです)を使用すると、追加された要素のIDを返すPOST要求を使用して要素を保存します。あなたの要素を取得し、関連するIDのためにそれらを繰り返します:

# assume your instance is called phones and your username is jack, change as appropriate 
def get_object(newest_id): 
    objects = requests.get('https://samplechat.firebaseio-demo.com/users/jack/phones.json').json() 
    added_object = [obj for obj in objects if obj == newest_id][0] 
    return added_object 

def add_object(dictionary_representing_object): 
    newest_id = requests.post('https://samplechat.firebaseio-demo.com/users/jack/phones.json', json=json.dumps(dictionary_representing_object), verify=False).json()['name'] 
    stored_object = get_object(newest_id) # stored_object will be a superset of what's in dictionary_representing_object -- it will have an additional entry representing firebase's unique id 

希望に役立ちます。

+0

ありがとうございますが、何度も何度も何度もそれを呼び出す必要はありませんか?その考えは、レコードが追加されると通知を送信することです。 – dnsko

+0

実際、リスナーは、私が概説したことを行うサーバー側プロセスです。 – hd1

1

@ hd1の答えが働き、あなたがすでに使っているpython-firebaseライブラリを使用します。しかし、あなたが言うように、それは確かに更新をポーリングする必要があります。

代わりにFirebase's REST streaming APIを聞くこともできます。 Python example of how to consume the REST eventsがあります(Pythonリクエストライブラリとsseclientライブラリを使用しています)。読み取りループはhereです:あなたがPythonでその機能を得ることができるよう

 self.sse = ClosableSSEClient(URL) 
     for msg in self.sse: 
      msg_data = json.loads(msg.data) 
      if msg_data is None: # keep-alives 
       continue 
      path = msg_data['path'] 
      data = msg_data['data'] 
      if path == '/': 
       # initial update 
       if data: 
        keys = data.keys() 
        keys.sort() 
        for k in keys: 
         self.message_queue.put(data[k]) 
      else: 
       # must be a push ID 
       self.message_queue.put(data) 

それはあなたが前に使用してきたネイティブJavaScriptクライアントのように単純ではありませんが、それは限り近いのです。

関連する問題