【发布时间】:2018-05-27 20:46:51
【问题描述】:
我目前正在设置以下应用程序:
- 使用 Express 的节点后端
- 以 Knex 作为接口的 Postgres DB
- 反应前端
一切都按预期工作,我正在取得良好进展,我的问题更多是架构性的:
在发生数据库更改时通知前端的首选/推荐/最佳方式是什么?
我看到 Postgres 具有 LISTEN/NOTIFY 功能,但 Knex (https://github.com/tgriesser/knex/issues/285) 目前(永远)不支持该功能。
我的想法:
- 轮询(每 x 秒查询一次数据库)。这看起来既浪费又过时,但很容易设置。
- 套接字。重写我所有的 Express 端点以使用套接字?
- ?
我很想看看其他人是如何处理这个问题的。
谢谢!
【问题讨论】:
-
为什么必须重写所有端点才能使用套接字?
-
如果你想通知你的客户端应用程序更新你最好的选择是使用 websockets。但是我很难想象一个用例,您希望每个客户端在每次数据库更新时都得到通知。让我们深入了解您正在尝试开发的应用程序的性质。
-
@trixn:它是可以锁定/待定/接受/等的项目提要,因此每个客户都需要收到更改通知。
-
@adrice727:因为当前端点返回前端摄取和处理的 json。我认为使用套接字需要重写两者
-
您仍然可以使用您的端点来接收例如初始数据。 Websockets 是向客户端发送更新的常用方式,也许服务器发送的事件可能是另一种选择。关于听/通知,我真的什么都说不出来,但我不明白你为什么需要这个。您可以在更改数据库的那一刻触发更新,因为这必须发生在您的代码中。
标签: node.js postgresql reactjs express knex.js