无法使用mongoose从数据库中检索名称

时间:2014-07-14 02:13:48

标签: javascript node.js mongodb express mongoose

我想获取数据库中所有name个键的值。我只有一个键(字段),它是db的每个文档中的“name”键。这是代码。我最需要帮助的代码是从

开始的底部

user.find({}, 'name', function(err, users){ ...

当我使用user.name时,我得到了未定义。

当我使用var html = "All users" + users + '<br>';时,我获得了对象/文档列表。我只想要名字的价值

目标:当用户输入他们的名字并提交时。下一页显示数据库中的所有名称,包括刚刚输入的名称。

mongoose.connect('mongodb://localhost/Company');

var Schema = new mongoose.Schema({
    name : String
})

var user = mongoose.model('emp', Schema);

app.get('/', function(req, res){
    var html = '<form action="/" method = "post">' + 
                'Enter your name:' + 
                '<input type = "text" name = "userName" placeholder= "...." />'+
                '<br>' + 
                '<button type = "submit">Submit</button>' +
                '</form>';
    res.send(html);
});

app.post('/', function(req, res){
    var html = "";
    var userName = req.body.userName;

    new user({
        name : req.body.userName
    }).save(function(err, doc){
     if(err){
        res.json(err);
     } else{
        user.findOne({'name' : userName }, 'name', function(err, user){
            if(err) return handleError(err);
    var html = "Hello: " + user.name + '.<br>' +
                '<a href="/">Try again</a>';

        });
     }

     // here is the code I need help with
     user.find({}, 'name', function(err, users){
        var html = "All users" + users.name + '<br>';
        res.send(html);
     });



    })
});
var server = app.listen(80, function(){
    console.log('Listening on port %d', server.address().port);
})

2 个答案:

答案 0 :(得分:0)

'name'选择器添加到find调用会限制users数组中文档的属性,但它仍然是一个文档对象数组,而不是字符串。要将其映射到仅包含name字符串的数组中,您可以调用所有数组中可用的JavaScript map函数:

 user.find({}, 'name', function(err, users){
    var html = "All users" + users.map(function(doc) {
        return doc.name + '<br>';
    });
    res.send(html);
 });

答案 1 :(得分:0)

我知道下划线有一个叫做pluck的方法,可以做你想要从对象集合中获取所有名称对象的方法。 Mongo模型列表可能带有该方法,但我不确定。

_.pluck([{name: 'jo', hair: 'brown'}, {name: 'cody', hair: 'blond'}],'name')

=> ['jo','cody']

你可以尝试一下mongo集合。