我想在快速js中的一个路由器中使用两个不同路由器的结果

时间:2018-06-13 07:15:37

标签: node.js express

我有两个不同的路由器,如果是单独的视图,两者都会给出准确的结果。但我希望将两个结果都放在一个视图(索引)中。 这是第一个路由器:

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 :(得分:0)

处理此问题的'通常'或'正确'方法是为您想要的内容提供单独的功能。例如,您希望从路径B调用路径A并呈现两个数据。我会做的是:

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

路线A:

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

路线B:

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

这不是一个完整的解决方案,只是一个想法。