0

Expressを学ぶために、expressjsの上にMVCを作成しようとしています。モデルとビューの間で問題が発生しています。Git リポジトリはここにあります

ブログ記事の一覧を表示したい。私はmongooseとexpressjsと組み合わせて、カスタムジャスミンビューを使用しています。クエリから投稿のリストを返す方法がわかりません (find({}) およびそのオブジェクトをビューに転送するか、それらを取得したらジャスミンでそれらの投稿を操作します。

私の見解でこの情報にアクセスするために必要だった最良のアイデアは、res.localsを使用することでしたが、うまくいかないようです。

// read
app.get('/', function(req, res){
  Blog.find({},function(err, records){
    res.locals.posts = records
    // res.send(records);
    records.forEach(function(record){
      console.log(record["body"])
    });
  });

  res.render("home.jade", {online:req.online.length + ' users online', posts:VARIABLE_I_AM_UNCLEAR_ABOUT});
});

console.log に本文が表示されるので、json のブログ投稿があることは明らかです。さらに、res.send(records) で JSON を返すことができます。それらのレコードにアクセスしたいので、ジャスミンを使用して自分のビューでスタイルを設定できます。

4

1 に答える 1

2

render試した場所に移動するだけですsend

app.get('/', function(req, res){
  Blog.find({},function(err, records){
    res.render("home.jade", {
      online : req.online.length + ' users online',
      posts  : records
    });
  });
});

Blog.find()は非同期であるため、データベースから結果が返されたときにのみコールバック関数が呼び出されます。元の状況では、最初に結果を待たずにテンプレートをレンダリングしました。

于 2013-05-16T06:10:38.517 に答える