reddit のような機能を備えたサイトを構築しています。ユーザーが送信したコンテンツに独自のページを取得したい。各送信には、そのページの URL に含めたい 5 文字の ID が割り当てられます。
タイトルと呼ばれるページをレンダリングするルーターファイルにこの関数があります。
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) をクリックすると、コンテンツが post.body の content というページに移動する必要があります。
a) URL を app.js ファイルに戻して app.get に含める、b) このルーター ファイルに app.get 関数を含める、または c) 他の方法でこれを解決するにはどうすればよいですか?
編集: 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, ...) に変更することだけでした。