MongoDB集合更改时自动刷新页面

时间:2019-04-25 11:16:35

标签: node.js mongodb express express-handlebars

我正在使用MongoDB应用程序创建Node.Js,每次MongoDB集合上发生任何更改时,我都需要刷新我的HBS页面之一。

不知道该怎么办。最好的方法是什么?

干杯。

2 个答案:

答案 0 :(得分:2)

您可以阅读Mongodb或Mongoose更改流,您可以在更改时观看

猫鼬网站上的典型示例:

// Create a new mongoose model
const personSchema = new mongoose.Schema({
  name: String
});
const Person = mongoose.model('Person', personSchema, 'Person');

// Create a change stream. The 'change' event gets emitted when there's a
// change in the database
Person.watch().
  on('change', data => console.log(new Date(), data));

// Insert a doc, will trigger the change stream handler above
console.log(new Date(), 'Inserting doc');
await Person.create({ name: 'Axl Rose' });

您可以在mongoosemongo网站上阅读更多内容

答案 1 :(得分:0)

感谢您的所有帮助。我发现的最佳(也是最简单)解决方案是将Websockets与Socket.io结合使用。 我使用了以下逻辑:

  • 在新用户页面上,我已将其添加到提交事件中:
socket.emit('UpdateOnDatabase');
  • 在我的app.js上:
io.on('connection', function(socket){
    socket.on('UpdateOnDatabase', function(msg){
        socket.broadcast.emit('RefreshPage');
    });
});
  • 在我的主页上,我要刷新的位置是:
var socket = io.connect('http://localhost:3000');
    socket.on('RefreshPage', function (data) {
        location.reload();
    });

我的思维方式有所改变,但它的工作方式完全符合我的要求。

干杯。