Javascript 无法使用mongoose从数据库中仅检索名称
我想获取数据库中所有名称键的值。我只有一个key字段,它是db的每个文档中的name key。这是代码。我最需要帮助的代码是从 user.find{},'name',functionerr,users{ 当我使用user.name时,我没有定义 当我使用var html=All users+users+时,我会得到对象/文档的列表。我只需要名称的值 目标:当用户输入名称并提交时。下一页显示数据库中的所有名称,包括刚输入的名称Javascript 无法使用mongoose从数据库中仅检索名称,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我想获取数据库中所有名称键的值。我只有一个key字段,它是db的每个文档中的name key。这是代码。我最需要帮助的代码是从 user.find{},'name',functionerr,users{ 当我使用user.name时,我没有定义 当我使用var html=All users+users+时,我会得到对象/文档的列表。我只需要名称的值 目标:当用户输入名称并提交时。下一页显示数据库中的所有名称,包括刚输入的名称 mongoose.connect('mongodb://localho
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);
})
将“名称”选择器添加到find调用中会限制用户数组中文档的属性,但它仍然是一个文档对象数组,而不是字符串。要将其映射到仅包含名称字符串的数组,可以调用所有数组中可用的JavaScript函数:
user.find({}, 'name', function(err, users){
var html = "All users" + users.map(function(doc) {
return doc.name + '<br>';
});
res.send(html);
});
我知道下划线有一个名为Pulk的方法,它可以实现从对象集合中获取所有名称对象的目的。Mongo模型列表可能与该方法一起提供,但我不确定
_.pluck([{name: 'jo', hair: 'brown'}, {name: 'cody', hair: 'blond'}],'name')
=> ['jo','cody']
您可以在mongo系列中尝试一下。谢谢您的回复,这很有效。在结束问题之前,我只想看看是否有其他方法可以做到这一点。