我有两个不同的路由器,如果是单独的视图,两者都会给出准确的结果。但我希望将两个结果都放在一个视图(索引)中。 这是第一个路由器:
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
});
}
});
});
我很难努力将两个结果合二为一,但无法做到这一点我是节点的初学者。
答案 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();
})
这不是一个完整的解决方案,只是一个想法。