я хочу использовать результат двух разных маршрутизаторов в одном маршрутизаторе в экспресс JS - PullRequest
0 голосов
/ 13 июня 2018

У меня есть два разных маршрутизатора, и оба дают точный результат в случае отдельных просмотров.Но я хочу получить оба результата в одном представлении (индекс).Вот первый маршрутизатор:

router.get('/', ensureAuthenticated, (req, res) => { 
  if(req.query.search){
  const regex = new RegExp(escapeRegex(req.query.search), 'gi');
  Idea.find({itemName: regex}, function(err, ideas){
  if(err){
        console.log(err);
      }
      else{
        res.render('ideas/index', {
          ideas:ideas
        });
      }
    });
  } 
  else {
    Idea.find({})
    .sort({date:'desc'})
    .then(ideas => {
      res.render('ideas/index',{
        ideas:ideas
      });
    });
  }
});

, а вот второй.

router.get("/sumResult", function(req, res) {
    var itemPrice = req.params.itemPrice;
    var isSolved = function(itemPrice, callback){ 
      console.log("in the aggregation: ", itemPrice);
      Idea.aggregate([
        //var isSolved = User.aggregate([
          {$group: {
            _id: null,
            totalPrice: { $sum: "$itemPrice" },
            total: {$sum: 1}  
          }}
    ],
    function(err, idea){
        console.log("this is the result: ", idea); // logs a result if the there is one, and [] if there is no result.
        callback(err, idea); // <<=== call callback here to return
    });
    };

  isSolved(itemPrice, function(err, idea) {
    if (err) {
      return def.reject(err);
    } else {
      res.render('ideas/sumResult', {
        idea:idea
      });
    }
  }); 
});

Я изо всех сил стараюсь получить оба результата в одном, но не могу этого сделать, я новичок в узле.

1 Ответ

0 голосов
/ 13 июня 2018

«Обычный» или «правильный» способ справиться с этим будет иметь отдельную функцию для того, что вы хотите.Например, вы хотите вызвать маршрут A из маршрута B и отобразить обе данные.Я бы сделал следующее:

let something = () =>{
 // Do stuff
}

Маршрут A:

router.get('/',(req,res)=>{
  something();
})

Маршрут B:

router.get('/other',(req,res)=>{
  //Do stuff
  something(); // get result
  render();
})

Это не полное решение, а простоИдея.

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