1

私の質問を言い換えさせてください。レンダリングする配列に返されるデータを取得するにはどうすればよいですか。(私はハンドルバーを使用しています)

コード:

//http verbs
module.exports = {
    get: function(req, res) {
      gm(req.url);
        app.set('view engine', 'hbs'); 

        //session check

        if (session checks out<-not actual code){

            //get mongoose data here
            var bmdata = bmquery.execFind(function(err, docs){
                console.log(docs);
                var model = {
                    layout:'blog.hbs',
                    BlogModel: docs,
                };
            //render page
            res.render('blog', model);
            });
        }

        else {
            console.log('illegal user');
            console.log('redirection in progress');
            res.redirect('/login');
        }
    }

};

docs の console.log は、[{document 1},{document 2}] のような配列で返されます。

配列の位置を設定する必要がないように、これを動的に行うこともできますか。

私のハンドルバーは次のようになります。

{{BlogModel[0].title}}
{{BlogModel[0].content}}
{{BlogModel[1].title}}
{{BlogModel[1].content}}

問題 データが配列で返され、動的にレンダリングすることも、まったくレンダリングすることもできません。

4

1 に答える 1

1
var BlogModel = mongoose.model('blogmodel', BlogPost, 'blogmodel');
var bms = BlogModel.find({ "date" : { $gte : new Date("2011-01-01T00:00:00Z")}} ).limit(1);

module.exports = {
   get: function(req, res) {
      //ExecFind is asnychornous, so you need to wait to get the data to render it.
      bms.execFind(function(err, docs) {
        console.log(docs);
        var model = {
             layout:'blog.hbs',
             BlogModel: docs
        };
        res.render('blog', model);
      });
   }
};

また、これはアプリ内のモジュールに取り残されているのではなく、アプリの構成にある必要があります

app.set('view engine', 'hbs'); 

誰かが言うように、ノードの非同期の性質を処理する方法を学び、コールバックの概念をもう少し理解する必要があります。

于 2012-07-27T13:48:11.617 に答える