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');
        }
    }

};

文档的 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 回答