2016-08-17 71 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的影响。我并没有真正考虑过这个问题,所以我不能真正给你详细说明在这个宏伟计划中什么是真正的意义,但是最重要的是,如果你可以等待,它可能会解决一些问题,如果不是全部的话。另一方面,很多人会说“在你孵化之前不要数你的鸡”,也就是说,不要指望那些未被释放/传递的东西来解决你现在遇到的实际问题。