2017-10-15 82 views
3

隨着Firebase的新Firestore的發佈,我發現我對Observables的瞭解不多。Firebase - Firestore - 我會讀多少次文檔

我的問題是這樣的:

我得到的一些數據和db.collection( '房間')。

  1. 如果我不聽訂閱的觀察,我是否獲取文檔? (我想是這樣)。

  2. 對於我的收藏「房間」中的每一個變化,它是否被Firestore視爲「讀取新文檔」?

  3. 如果我有在我的應用程序中返回db.collection('room')的重複Observables,我會將X調用到Firestore數據庫還是隻有一個?

謝謝!

回答

5
  1. 如果我不聽可觀察到的一個訂閱,我取的文件? (我想是這樣)。

當你調用var ref = db.collection('room')ref是不是一個真正的可觀察到的是在'room'集合的引用。創建此引用不會執行任何數據讀取(從網絡或磁盤)。

當您撥打ref.get()ref.onSnapshot()時,您正在從服務器獲取文檔。

  1. 對於我的收藏「房間」中的每一個變化,它是否被Firestore視爲「讀取新文檔」?

如果您正在收聽的整個集合(無where().orderBy()條款),你有一個活躍的onSnapshot()聽衆然後是,你將被收取爲一個文件讀取操作每次添加新文檔時,更改或刪除集合中。

  • 如果我有重複觀測量這在我的應用程序返回db.collection(「房間」),我將有X調用到公司的FireStore數據庫或只是一個?
  • 如果你正在聽在兩個地方同雲公司的FireStore數據,你只會讓一個呼叫服務器,並收取讀取操作一次。將多個偵聽器附加到一個引用沒有成本/性能損失。

    +0

    感謝您的完整答案。這真的很有用! 對於第三個問題:如果我定義了兩個獨立的可觀測量,它們同時調用 'db.collection('room')。onSnapshot()',它會被認爲是一個或兩個? – Wandrille

    +0

    您只會實際閱讀一次文件,我們只會通知兩位觀察員。 –

    +1

    謝謝你,現在我對我的代碼更有信心。 – Wandrille

    相關問題