Отправка данных в веб-интерфейс (Angular) при обнаружении изменений в базе данных (MongoDb) - PullRequest
0 голосов
/ 24 мая 2019

Я разрабатываю приложение MEAN.js. Итак, насколько я знаю, MongoDB не является базой данных реального времени, но с использованием change Stream и watch мы можем обнаружить изменения в базе данных

Так что мне удалосьЧтобы определить, когда происходят изменения в базе данных, выполните следующие действия:

app.get("/getLogs", (req, res) => {
      const { db } = req.app.locals;
      const changeStream = db.collection("Logs").watch();
      changeStream.on("change", function(change) {
        db.collection("Logs")
          .find()
          .toArray(function(err, results) {
            logs = results;
            // send Data to frontend
          });
      });

Проблема заключается в том, как отправить данные из экспресс-в угловую и как может остаться угловая при прослушивании изменений.

Iмы пытались отправить данные на фронт с res.send(), но это не сработает, потому что я получу ошибку "Cannot set headers after they are sent to the client"

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете использовать res.json () в этом случае

app.get("/getLogs", (req, res) => {
      const { db } = req.app.locals;
      const changeStream = db.collection("Logs").watch();
      changeStream.on("change", function(change) {
        db.collection("Logs")
          .find()
          .toArray(function(err, results) {
            logs = results;
            res.json({results})
          });
      });
...