【发布时间】:2016-05-21 06:45:56
【问题描述】:
我试图弄清楚当用户访问"/users/:name" 时如何在页面上检索适当的信息。我想要做的是打印出“欢迎 user2”,如果 user2 已登录,其他用户也一样。我想这样做的方法是从"/users/:name" 传递参数并检查参数是否等于username 值打印出该值。(不确定这是否是一种安全的方法)如何我是否循环浏览我的特定对象列表并将其与参数进行比较?
我把这个发送到我的玉文件中
{ list: 'userList', users: [ { password: 'pass1', username: 'user1' }, { username: 'user2', password: 'pass2' }, { username: 'user3', password: 'pass3' } ], address: '14459 70 th st city NY', desc: '3 floors', __v: 0, _id: 56baf181356641f01213295a }
因为我这样做,所以发送了这个:
app.get("/users/:name", function(req, res){
// console.log(req.params.name)
User.findOne({"users" : { $elemMatch: { username : req.params.name}}}, function(err, doc){
console.log("test ", doc)
res.render("users", {result : doc, name : req.params.name});
})
})
玉:
html
head
body
p= result
p Welcome #{result.users[0].username} #{name} // prints out--> Welcome user1 user2 ||| when user2 signs in
p= result.address
h3= result.desc
a(href="/logout") logout
【问题讨论】:
-
基本上你有一个对象,每次
result.users[0].username的第一个用户名总是等于user1。所以问题是你想在这里实现什么授权检查? -
我已经授权了。用户可以使用 users 数组中的任何用户名和密码组合登录(他们可以查看和更改相同的数据)。现在我只想为登录的用户打印一条欢迎消息。我知道
result.users[0].username只是查看第一个对象。我只想从这些对象中检索正确的用户名。我认为这对我来说是一个很好的迭代练习。不确定是否使用 each 或 for 循环 -
我想将
name与对象中的用户名进行比较并打印出用户名值,但存在三个对象。我可以通过插入name来打印出用户名,但我想从对象中获取它。 -
当然,请参阅下面的答案。可以从玉标记中的
user变量中获取所有适当的数据。
标签: javascript express mongoose iteration pug