2016-08-17 70 views
1

我有一個PostgreSQL 9.5 &流星1.4。 我想從數據庫中選擇數據並在瀏覽器控制檯中顯示它。流星JS + PostgreSQL

對於流星& SQL我使用這個包https://github.com/storeness/meteor-postgres

我想實時地在瀏覽器控制檯中顯示數據庫的數據。 e.g我的數據庫是[9, 5, ..., 5]. 用戶之後來到現場,我們於是在控制檯添加一些數據[9, 5, ..., 5, 6,7].

我們[6,7] 我是新手,我該怎麼辦呢?

非常感謝。

回答

6

我假設問題是「如何使用Postgres獲得反應性」?我會盡我所能依據的知識,我要回答這個問題,但請記住:

  1. 我不爲千年發展目標的工作,使我的知識對他們正在工作的深度僅限於他們已經公佈。
  2. 我將這個基於我的知識,它來自幾個基於Meteor的項目的實踐經驗。
  3. JS框架世界中的事物一直在快速地改變着SUPER,因此可能有些事情我不知道。我依靠別人來填補我可能缺乏知識的地方。

所以,簡短的回答:在目前的流星,據我所知,這是不可能有外的開箱即用的比MongoDB的任何其他反應。

現在,長答案稍微複雜一點。您可以可以編寫您自己的代碼來監視SQL服務器的操作,並通過DDP自己設置pub/sub。我有一些demo code in git,我在坦帕的流星會議上做了一些嘗試,如何通過Pub/Sub來破解DDP。做DDP部分確實不是非常困難。最難的部分是獲得選擇的SQL服務器上的反應性設置...在這種情況下,Postgres。

要映射的事情了,這裏是你需要做的基本知識:

  1. 實現某種自定義的代碼,得到的Postgres時得到更新事件觸發。這段代碼應該足夠智能,以便知道哪些表已更新,哪些正在您的發佈/訂閱中使用,以便僅在需要時才更新。
  2. 使用#1中的事件來驅動您的出版物。您可以在這裏獲得漂亮的數據行,或者在每次更新時發送所有行。如果您選擇第一個選項,您需要以某種方式協調已發送內容的更改,以便發佈增量。如果您選擇第二個選項,那麼您仍然需要跟蹤您發送的通過DDP刪除它們的結果。無論哪種方式,這似乎令人望而生畏。連接和子查詢可能幾乎不可能處理
  3. 從客戶端,我們只需要訂閱發佈。客戶端會像以前一樣使用mini-Mongo。

不管你如何切片,這是一個艱難的過程來編碼。在Meteor中使用MongoDB主要是因爲它的Oplog使得跟蹤更改變得非常簡單,而且由於它不是關係數據庫,所以他們不必擔心連接/子查詢問題。

最大的難題是Apollo的形式,這是來自千年發展目標的一個巨大項目,重新激勵了Meteor如何反應。據說Apollo將DCD和MongoDB中的Meteor分離出來,並且不太受pub/sub-ie和依賴GraphQL的影響。我並沒有真正考慮過這個問題,所以我不能真正給你詳細說明在這個宏偉計劃中什麼是真正的意義,但是最重要的是,如果你可以等待,它可能會解決一些問題,如果不是全部的話。另一方面,很多人會說「在你孵化之前不要數你的雞」,也就是說,不要指望那些未被釋放/傳遞的東西來解決你現在遇到的實際問題。