我想获取数据库中所有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);
})
答案 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集合。