将 express 发送的对象的适当值输出到 jade

output to jade the appropriate value from an object sent from express

我正在尝试了解当用户访问 "/users/:name" 时您将如何在页面上检索适当的信息。我想做的是打印出 "welcome 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

那么您可能想要使用这个,select 给定参数输入的适当用户对象:

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)
        var users = result.users;
        var currentUser = {};

        for(var i=0;i<users.length;i++)
          if(users[i].username === req.params.name)
            currentUser = users[i];
        res.render("users", {result : doc, user : currentUser });
    });
})