我正在构建一个具有类似 reddit 功能的网站。我希望用户提交的内容有自己的页面。每个提交都分配了一个 5 个字符的 ID,我希望该 ID 出现在该页面的 URL 中。
我在路由器文件中有这个函数,它呈现一个名为标题的页面:
exports.titles = function(req, res){
i = 0
read(function(post){
url = post[i].URL;
res.render('titles', {title: post[i].title, url: post[i].URL});
});
};
它由 app.js 中的以下语句提供服务:
app.get('/titles', home.titles); //home.js is the router file
标题页有一个带有文本 post.title 和 URL post.URL 的链接。当用户点击链接(例如 domain.com/12345)时,他们应该被带到一个名为 content 的页面,其内容为 post.body。
我如何 a) 将 URL 传递回我的 app.js 文件以包含在 app.get 中,b) 在此路由器文件中包含 app.get 函数,或 c) 以任何其他方式解决此问题?
编辑:我确实有一个对象'titles',它是一个 mongodb 集合,但它位于不同的模块中。没有理由我不能将它添加到路由器。
编辑:我尝试将此添加到 app.js 以查看它是否有效:
app.get('/:id', function(req, res){
return titles.findOne({ id: req.params.id }, function (err, post) {
if (err) throw(err);
return res.render('content', {title: post.title, content: post.body});
});
});
编辑:我让它工作。我所做的只是格式化标题,使其看起来像 domain.com/titles/12345 并将 app.get('/:id', 更改为 app.get('/titles/:id, ...