【问题标题】:Correct way to update frontend when backend changes后端更改时更新前端的正确方法
【发布时间】: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


【解决方案1】:

我以前也遇到过类似的情况。我有一个通过 Web 套接字连接到 API 的前端。 API 在成功提交数据库时发出一条消息,其中 API 端点与更新匹配。前端组件侦听这些更新套接字消息,如果更新的类型与该组件相关,则组件将通过 https 查询 API 端点以获取新数据。仅使用 Web 套接字来宣传可用的更新并不需要重写整个 API。

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多