MongoDB collection 变化时自动刷新页面
Refresh page automatically when MongoDB collection changes
我正在用 MongoDB 制作一个 Node.Js 应用程序,每次我的 MongoDB collection 发生变化时,我都需要刷新我的 HBS 页面之一。
不知道我应该做什么。这样做的最佳方法是什么?
干杯。
您可以阅读 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' });
感谢您的帮助。我发现的最好(也是最简单)的解决方案是使用带有 Socket.io 的 websockets。
我使用了以下逻辑:
- 在我的新用户页面上,我在提交事件中添加了这个:
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();
});
我稍微改变了我的思维方式,但它完全符合我的要求。
干杯。
我正在用 MongoDB 制作一个 Node.Js 应用程序,每次我的 MongoDB collection 发生变化时,我都需要刷新我的 HBS 页面之一。
不知道我应该做什么。这样做的最佳方法是什么?
干杯。
您可以阅读 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' });
感谢您的帮助。我发现的最好(也是最简单)的解决方案是使用带有 Socket.io 的 websockets。 我使用了以下逻辑:
- 在我的新用户页面上,我在提交事件中添加了这个:
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();
});
我稍微改变了我的思维方式,但它完全符合我的要求。
干杯。