2015-04-02 36 views
3

我app.js文件有以下对象数组:如何在expressJS中正确显示动态页面?

var people = [ 
     {name: "Henrique Melo", username: "heenrique", email: "[email protected]"}, 
     {name: "João Pessoa", username: "jooao", email: "[email protected]"} 
    ]; 

我想每个人用下面的代码创建一个页面:

app.get("/:username", function(req, res) { 
    for (var i = 0; i < people.length; i++) { 
     if (people[i].username === req.params.username) { 
      res.render("description.ejs", { pageTitle : "Profile", user : people[i] }); 
     } else { 
      res.status(404).json("User not found."); 
     } 
    } 
}); 

为先说明页面数组中的人(“/ heenrique”)加载完美,但不会显示任何后续对象。当我输入(“/ jooao” - 数组中的第二个人的用户名)时,我在我的else语句中得到“user not found”消息。我创建的循环肯定有问题。请澄清这个问题。

回答

4

问题是,循环必须继续为下一个项目而不呈现任何错误(第1次迭代时发生错误,因为人员[0]不符合请求的用户名)。一种工作方式就是这样。

app.get("/:username", function(req, res) { 
    for (var i = 0; i < people.length; i++) { 
     if (people[i].username === req.params.username) { 
      res.render("description.ejs", { pageTitle : "Profile", user : people[i] }); 
      return; 
     } 
    } 
    res.status(404).json("User not found."); 
}); 
+0

它的工作,谢谢! “回归”扮演的角色是什么?另外,res.status(404).json(“User not found。”)没有针对每个GET请求执行为“/:username”而被执行的情况如何? – newbie 2015-04-02 17:19:39

+0

“return”立即停止执行并退出函数,不再执行。它简化了代码并提高了可读性。 – cardeol 2015-04-02 21:54:30