使用mongoose查找所有文档

时间:2014-07-18 03:16:48

标签: node.js mongodb mongoose

我试图使用猫鼬找到数据库中的所有文档,但我不能这样做

我想这样做,但我不知道它有什么问题

app.get('/users', function (req, res){
    User.find({}, 'name', function(err, user){
        if(err){
            console.log(err);
        }else{
            res.render('user-list', {
                name : user.name
            });
            console.log('retrieved list of names' + user.name);
        }
    })
})

当我使用User.findOne({}, 'name', function(err, user){..时,我会收到第一份文件,这是我所期望的。请解释为什么上面的代码不允许我获取所有文档。我觉得我在 mongoose doc

中以正确的方式使用它

编辑

感谢帮助人员

我确实喜欢这个:

app.get('/users', function (req, res){
    User.find({}, 'name', function(err, users){
        if(err){
            console.log(err);
        }else{
            res.render('user-list', {
                name : users.map(function(doc){
                    return doc.name + "<br>"
                })
            });
            console.log('retrieved list of names' + users.name);
        }
    })
})

有人可以帮助我将每个名字放在"<br>"显示在页面上的新行上但不会换新行"<br>,Joe<br>,mike<br>"

玉:     扩展布局

block content

    p list of users #{name} 

2 个答案:

答案 0 :(得分:4)

app.get('/users', function (req, res){
    User.find({}, 'name', function(err, users){
        if(err){
          console.log(err);
        } else{
            res.render('user-list', users);
            console.log('retrieved list of names', users.length, users[0].name);
        }
    })
});

如评论中所述,find可以找到许多对象,因此它返回一个与返回单个对象的findOne形成对比的数组。如上所述进行调整,您应该回到正轨。

答案 1 :(得分:0)

app.get(`/users`, async (req,res)=>{
  try{
    const users = await User.find({}).exec()
    users && res.render('user-list',users)
  }catch(error){
   res.status(500).json({error})
  } 
})

//OR

app.get(`/users`, async (req,res)=>{
  try{
    const users = await User.find({}).exec()
    const list = new Array()
    for(let row of users){
      list.push(`${users.name}<br>`)
    }
    list ? res.status(200).send(list) : res.status(200).json({message: 'Users list is empty'}) 
  }catch(error){
   res.status(500).json({error})
  } 
})

在第二个示例中,您向客户端发送一条文本行!!!