此代码的每一部分都单独工作,但当放在一起时,Article部分(第三部分)将不会加载。我对编码很新,所以我希望有人指出我正确的方向。我认为这是因为第一条路线被执行并且它从未到达第二条路线......但我不知道如何解决它。
// Adds "www." to all URLs
app.all('*', function(req, res, next) {
if (req.headers.host.match(/^www/) == null) {
res.redirect('http://www.' + req.headers.host + req.url);
} else {
next();
}
});
// Serves the .html file but displays without .html in the URL
app.get('*', function(req,res){
var pages = ['/now', '/home', '/itinerary','/exploreourroots','/contact','/credits'];
if (pages.indexOf(req.url.toLowerCase()) !== -1) {
res.sendFile(__dirname + '/public' + req.url + '.html');
};
});
// Loads Articles from the database on the home page
app.get('/home', function(req, res) {
var query = 'SELECT a.title,a.author,a.cover_photo,a.html_loc,a.date_published,c.name country_name FROM articles a INNER JOIN countries c ON c.id=a.country_id ORDER BY a.date_published desc;'
connection.query(query, function(err, rows, fields) {
var list = [];
for (var i = 0;i < rows.length; i++) {
list.push({html_loc: rows[i].html_loc,country_name: rows[i].country_name,cover_photo: rows[i].cover_photo,title: rows[i].title,author: toAuthorPhoto(rows[i].author),date_published: toArticleDate(rows[i].date_published)});
}
res.contentType('application/json');
res.send(list);
});
});
感谢您的帮助!
答案 0 :(得分:2)
我不确定你有什么意图。
如果用户在浏览器www.mydomain.com/home
中输入内容,该怎么办?您想要返回静态html文件(home.html),这是由第二个路由器完成的。或者你想从db(第三条路线)发表文章?
如果你想在url为/home
时从db提供文章,那么替换第二和第三条路线的顺序:
app.get('/home', function(req, res) { ... });
app.get('*', function(req,res){ ... });
如果您想要在路由/home
时提供静态HTML,并且您希望有可能提供文章,那么就像之前一样替换订单并另外将/home
路由器更改为/article
。如果网址为/article
,则您将投放文章:
app.get('/article', function(req, res) { ... });
app.get('*', function(req,res){ ... });