【问题标题】:Database insert data, real-time render to frontend数据库插入数据,实时渲染到前端
【发布时间】:2021-12-19 12:11:26
【问题描述】:

想法是水中的传感器将数据发送到我的数据库,我希望将数据实时发送到前端,换句话说:数据库更新然后前端更新。

我使用的工具:

  1. MongoDB
  2. NodeJS
  3. socket io
  4. ReactJS

实际上工作正常,这是我处理实时数据流的主要代码

const Zips = require("./dataSchema");

io.on("connection", (socket) => {
    setInterval(()=>{
         Zips.find().then((result) => {
    socket.emit("output", result);
  });
    }, 5000)
});

#Zips 是使用 mongoose 的架构
我使用 setinterval 每 5 秒更新一次。

问题:

Socket-io 或 Mongodb 是否提供了不需要 setInterval 或任何其他方式的函数或方法?

##编辑 11/8 射线显示文档的工作原理。

【问题讨论】:

  • change streams 你在找什么吗?
  • @ray thx 你,这就是我要找的,文档方法watch() 为我工作:)
  • 如果你有能力,我鼓励你在这里发布你自己的解决方案作为帮助社区的答案:)

标签: node.js reactjs mongodb socket.io


【解决方案1】:

解决方案:

io.on("connection",(socket)=>{
  const changeStream = Zips.watch()
  changeStream.on('change',(next)=>{
    if(next.operationType=="insert"){
      Zips.find().then((result) => {
           socket.emit("output", result);
        });
    }
  })
})

使用watch(),然后回调函数提供了很多可以追踪的数据。
文档:change streams

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 2016-09-12
    • 2021-08-18
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2013-09-19
    相关资源
    最近更新 更多