Обновление страницы автоматически при изменении коллекции MongoDB - PullRequest
2 голосов
/ 25 апреля 2019

Я делаю Node.Js с приложением MongoDB, и мне нужно обновлять одну из моих страниц HBS каждый раз, когда что-то меняется в моей коллекции MongoDB.

Не знаю точно, что мне делать. Каков наилучший подход для этого?

Приветствие.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Вы можете прочитать в Mongodb или mongoose потоки изменений, которые вы можете посмотреть при изменении

Типичный пример с сайта 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' });

Вы можете прочитать больше на mongoose или Монго веб-сайт

0 голосов
/ 30 апреля 2019

Спасибо за вашу помощь.Самым лучшим (и самым простым) решением, которое я нашел, было использование websockets с Socket.io.Я использовал следующую логику:

  • На своей новой странице пользователя я добавил это в событие отправки:
socket.emit('UpdateOnDatabase');
  • В моем приложении.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();
    });

Я изменилсямой образ мыслей немного, но он работает именно так, как я хочу.

Ура.

...