Проблема с выводом данных с mongodb + node js+ express

проблема состоит в одновременном выводом данных из mongodb. Когда пытаюсь вывести данные на страничку всё выводиться, но есть еще один промежуточный обработчик который увеличивает значеные в бд при загрузке страницы. Вот в этом и проблема как можно вывести одновременно и данные и что бы сработал запрос на бд на увеличение значения. Я новичок в js.

  result.find({$or:  [{name:'police'} ,  {name:'score7'}]}, function(err, data){
      res.render('result_other', {result: data, title: 'Отчет из  Полиции'});
  });});



   <h4><%=title%></h4>
      <h3>
          <% result.forEach(function (result) { %>
          <%= result.text %> 
          <% }) %>
</h3>


  router.get('/result/police', function(req, res) {
  result.findOneAndUpdate({name:'score7'} ,{$inc:{text2:"11"}})});    


  

  <h3>
  <% result.forEach(function (result) { %>
  <%= result.text2 %> 
  <% }) %>

</h3> ```

Заранее спасибо.








вот этот код рендерит страницу и выводит в консоль текст, но не увеличивает значение в базе

  router.get('/police', function (req, res, next) {
  
  result.findOneAndUpdate({name:'score7'} ,{$inc:{text2:"11"}});
  console.log('123');
  next();
}, function (req, res) {
result.find({$or:  [{name:'police'} ,  {name:'score7'}]}, function(err, data){
      res.render('result_other', {result: data, title: 'Отчет из police'});
  });
});

Ответы (1 шт):

Автор решения: Sergei Kirjanov

Что-то типа такого:

router.get('/planet', async (req, res) => {
    ....
    const filter = { name: 'Luke Skywalker' }
    const update = { $inc : { visitCount : +1 } }
    const doc = await Character.findOneAndUpdate(filter, update)
    res.render('planet_report', {result: doc, title: 'Отчет'})
})

Смысл в том, чтобы использовать вариант с await перед вызовами функций, а не передачу колбэка.

Возможно нужен еще явный exec: findOneAndUpdate(....).exec()

Вообще действие (изменение) и последующее отображение лучше не перемешивать в одном запросе с клиента. И еще get может кэшироваться, и расчитывать во время get-а что-то изменить не стоит.

→ Ссылка