Javascript Express函数被多次调用
我有这条路线:Javascript Express函数被多次调用,javascript,node.js,express,routes,Javascript,Node.js,Express,Routes,我有这条路线: router.get("/cat/:cat", function(req, res){ Play.find({style: req.params.cat}).sort({date: -1}).exec(function(err, play){ if(err){ console.log(err); req.flash("error", "(Error - Find-2-1) Find Playlist"); res.redirect(
router.get("/cat/:cat", function(req, res){
Play.find({style: req.params.cat}).sort({date: -1}).exec(function(err, play){
if(err){
console.log(err);
req.flash("error", "(Error - Find-2-1) Find Playlist");
res.redirect("/index");
} else {
Categories.find({name: req.params.cat}).exec(function(err, cat){
if(err){
console.log(err);
} else {
console.log("\n "+ cat +" \n");
res.render("Categories/show.ejs", {
ttt: cat,
playlists: play
});
}
});
}
});
});
但是当我访问/cat/:cat时,我会打印两次“cat”。我试图回答这个问题,但没用。我不知道为什么会发生这种情况,只有这条路线会发生这种情况,其他路线都很好
它在页面开始加载时打印,然后在页面完成加载时打印
当我摆脱
类别。find
过程时,它也可以正常工作。你试过使用callback或promise而不是exec吗?@VivekKumar我该怎么做?感谢You@VivekKumar我尝试使用findById
。当我使用findById
时,它工作正常。您是否在控制台中看到错误消息,或者仅cat
被打印两次?由于同一请求打印了两次,因此res.render
也将被调用两次,这将发出一个错误。在播放之前,您是否曾经在控制台.log('get'+req.params.cat)
上输入过。查找以检查您是否真的只有一个请求?@t.niese onlycat
被打印两次。我尝试使用findById
。当我使用findById
时,它工作得很好