节点js在res.render中循环

时间:2017-06-26 20:19:41

标签: json node.js express

嘿所有人我有一个路由器,基本上拉入一个JSON文件并输出该阵列的各种实例。当我在我的for循环中使用console.log标题循环并输出并输出每个实例时,效果很好。当我把我的res.render放在for循环中并传递给它时,在console.log中循环的同一个变量只会输出第一个实例。有人知道为什么吗?有没有办法循环res.render输出JSON中与console.log相同的所有实例。

感谢您的时间,

router.get('/fuelTypeFilter', function(req, res, next) {

        var url = "Example.JSON"

        request({
            url: url,
            json: true
            }, function (error, response, obj) {

             if (!error && response.statusCode === 200) {
                // console.log(obj) // Print the json response
                for(key in obj.categories){
                    var img = obj.categories[key];
                    var title = obj.categories[key].product_category_title;

                    console.log(title);
                    // console.log(obj.categories[key]);
                } 
                res.render('fuelTypeFilter', { title: 'Fuel Type', item: title });
            } //end of if 

        }); // end of request  
});

1 个答案:

答案 0 :(得分:0)

res.render所做的基本上是一个普通的HTML文件,其中插入了一些模板,所以对象数据就像你传递给渲染调用的对象一样。因此,res.render的行为类似于return语句,就像您的代码到达该标记时一样,它向路由器发出信号,表示我们需要呈现此页面(在浏览器中显示给用户),因此我们必须完成我们的路由器处理逻辑。

是否可以循环使用'渲染调用,答案是否定的,因为这意味着即使成功,也会一个接一个地出现许多你想要的页面,所以从这个角度来看,你真的不想继续进行渲染调用。您在浏览器中的视图会在一瞬间有效地保持清爽。

使用render执行此操作的一种方法是将类似数组的数据打包到传递给res.render的对象中,然后假设您使用某种模板引擎,执行类似的操作到了一个循环'在那里,循环和打印元素,比如HTML divs。

希望这有点帮助。