我在mongodb中有这些数据
> use mongo
switched to db mongo
> db.users.find();
{ "_id" : ObjectId("556c77c334e275d2ce8b2870"), "fname" : "Carlos", "lname" : "Perez", "telf" : 2316789 }
{ "_id" : ObjectId("556c77e034e275d2ce8b2871"), "fname" : "Juan", "lname" : "Alvarez", "telf" : 2323456 }
{ "_id" : ObjectId("556c780334e275d2ce8b2872"), "fname" : "Roberto", "lname" : "Sabina", "telf" : 2398753 }
这是我的获取路由器
//Model
mongoose.model('users', {fname: String, lname: String; telf: Number});
//Get Router
app.get('/data', function(req, res){
mongoose.model('users').find(function(err, users){
console.log(users);
res.send(users);
});
});
控制台中的结果很好
[ { _id: 556c77c334e275d2ce8b2870,
fname: 'Carlos',
lname: 'Perez',
telf: 2316789 },
{ _id: 556c77e034e275d2ce8b2871,
fname: 'Juan',
lname: 'Alvarez',
telf: 2323456 },
{ _id: 556c780334e275d2ce8b2872,
fname: 'Roberto',
lname: 'Sabina',
telf: 2398753 } ]
但是当我需要特定的数据时,仅举例说明(users.fname)
//Get Router
app.get('/data', function(req, res){
mongoose.model('users').find(function(err, users){
console.log(users.fname);
res.send(users);
});
});
控制台中的显示我未定义数据,而jade模板为空
undefined
为什么会出现这个问题,请帮助我谢谢
答案 0 :(得分:1)
mongoose.model('users').find(function(err, users){
/*
Here users is an array of objects.
So, users.fname won't work,
*/
// This works
console.log(users[0].fname);
// or
for(var i = 0; i < users.length; i++) {
console.log(users[i].fname);
}
});
答案 1 :(得分:0)
用户是一个数组。它有索引项,没有键。 您可以使用括号表示法访问项目,例如用户[0]。
一个数组在其原型上也有可以调用的属性,例如: users.length。因此,当您调用users.fname时,它认为您正在尝试访问其原型链上的属性,该属性不存在,因此您未定义。
您可以遍历数组并记录每个项目的fname,如此...
app.get('/data', function(req, res){
mongoose.model('users').find(function(err, users){
users.forEach(function(user) {
console.log(user.fname);
};
res.send(users);
});
});
如果这是您需要的唯一数据,您可能还想将fnames从请求返回到mongo ...
http://mongoosejs.com/docs/2.7.x/docs/finding-documents.html
app.get('/data', function(req, res){
mongoose.model('users').find({},'fname', function(err, users){
users.forEach(function(user) {
console.log(user.fname);
};
res.send(users);
});
});