node.js - 如何在每次获得新的数据库条目时更新 html 而无需重新加载页面

标签 node.js ajax reactjs mongodb ejs

我正在设置一个 node.js 服务器,它不断检查 mongo 数据库中的新条目。如果有新条目出现,html 站点应该会更新,而无需重新加载并使用数据库中的数据。

每次有新条目时,我都可以接收数据,但无法更新网站。 我查找了一些可能的工具,例如ajax或react.js,但我只是找不到完美的解决方案(甚至是解决方案)来说明其工作方式。

连接Mongodb并接收数据

MongoClient.connect('mongodb://192.168.128.128:27017/familientag', function(err, client) {
  if (err) {
    console.error('An error occurred connecting to MongoDB: ', err);
  } else {
    const db = client.db("familientag")
    const collection = db.collection('data');
    console.log("Connected successfully to server");

    const changeStream = collection.watch();
    changeStream.on('change', next => {
      console.log(next.fullDocument['name']);
      // Here I receive the data "_id" and "name"
    });
  }
});

我的index.ejs

<!DOCTYPE html>
<html>
    <head>
        <title>Dies ist ein Test</title>
    </head>
    <body>
        <div id="target">
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script>
            $.ajax({
                type: 'GET',
                url: '/test',
                success: function(data) {
                    var html = data;
                    $('#target').html(html);
                }
            });
        </script>
    </body>
</html>

调用索引

app.get('/index', function (req, res) {
  res.render('index');
});

每次从数据库读取新数据集时,我希望在索引站点上看到该名称,而无需重新加载窗口。

最佳答案

使用开放套接字应该可以帮助您。您可以将新数据传递到套接字主体,也可以简单地触发 UI 从 api 请求数据。

我建议查看socket.io:https://socket.io/很快就能开始。它是一个灵活的 Node 套接字框架,具有精彩的文档。

如果您想自己管理更少的套接字状态,Pusher 是一个不错的选择。带有自己的用户界面。 https://pusher.com/

关于node.js - 如何在每次获得新的数据库条目时更新 html 而无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55829506/

相关文章:

javascript - 从数据库中检索自上次更新以来的新条目

javascript - 无法解构 'chats' 的属性 'this.props.data',因为它未定义

javascript - 如何将其转换为样式组件以及如何嵌套类

javascript - 自定义验证和格式化从数据集返回的响应 - 初学者

node.js - Firebase 服务失败但部署工作正常

javascript - 在 asp.net 中,Ajax 返回数据表总是出现错误部分

php - 根据已完成的搜索来搜索mysql数据库

javascript - react 不适用于错误的请求

javascript - NodeJS 路由问题

javascript - 这个后端任务对 Node.js 来说是 CPU 密集型的吗?