Приложение упало и вернуло ноль, хотя все данные напечатаны правильно [ExpressJS] - PullRequest
2 голосов
/ 04 июня 2019

У меня очень странная проблема: приложение вылетает после правильной печати всех данных, веб-страница (просмотр) работает в первый раз, а затем останавливается после перезагрузки страницы.

router.get('/:category/:book', function (req, res) {
    Book.findOne({slug: req.params.book}, function (bookErr, book) { 
       User.findOne({_id: book.user},function(userErr, user){

         if (bookErr || userErr) {
              console.log(bookErr, userErr);
         }
          });

                     res.render('book', {
                          b: book,
                          user: user
                         });
   }); 
  })

* Примечание:

  • Когда я console.log 'req.params.book', он печатается правильно.
  • Когда я утешаю журнал 'book', он печатается правильно.
  • Когда я console.log 'user', он печатается правильно.
  • Когда я перехожу к представлению HTML, все данные отображаются правильно.
  • Приложение упало и показало следующее сообщение после загрузки страницы.
  • После перезагрузки страницы сервер полностью остановился.
TypeError: Cannot read property 'user' of null
    at /home/hossam/Public/mostaml-book/routes/books.js:235:41
    at model.Query.<anonymous> (/home/hossam/Public/mostaml-book/node_modules/mongoose/lib/model.js:4093:16)
    at /home/hossam/Public/mostaml-book/node_modules/kareem/index.js:273:21
    at /home/hossam/Public/mostaml-book/node_modules/kareem/index.js:131:16
    at process._tickCallback (internal/process/next_tick.js:61:11)
Emitted 'error' event at:
    at model.Query.<anonymous> (/home/hossam/Public/mostaml-book/node_modules/mongoose/lib/model.js:4095:12)
    at /home/hossam/Public/mostaml-book/node_modules/kareem/index.js:273:21
    at /home/hossam/Public/mostaml-book/node_modules/kareem/index.js:131:16
    at process._tickCallback (internal/process/next_tick.js:61:11)

Это ошибка? & Есть ли более удобный способ распечатать эти коллекции?

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Я использую чистое обещание. Вот его структура.

     function PromiseDemo(){
           return new Promise((resolve,reject)=>{


           your first query code here
           //here dont forget to write resolve({result:'success'}); at the end of your code

   }
    return PromiseDemo().then(Response=>{
    your second query code here
    })

ТАК, это структура обещания. Вы можете проверить больше наших обещаний здесь обещание является nodejs

0 голосов
/ 04 июня 2019

ОК, проблема решена, и решение было очень странным!

В представлении HTML источник изображения составлял три точки (...)!

<img src='...'>

Для этого req.params запрашивает слаг книги, а затем запрашивает три точки, и, поскольку три точки не существуют в коллекции, результат будет нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...