Javascript 无法查询从Mongodb返回的类似数组的对象

Javascript 无法查询从Mongodb返回的类似数组的对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,使用node.js/express和mongoose(mongodb)以及passport。我在获取返回的类数组对象的键/值对时遇到问题。 用户模型: { local : { email : String, password : String }, skills : { skill : String, level : Number } } 我可以像这样为用户添加新技能:完全按照预期工作 app.post( '/addskill', func

使用node.js/express和mongoose(mongodb)以及passport。我在获取返回的类数组对象的键/值对时遇到问题。 用户模型:

{ 
 local : {
   email     : String,
   password  : String
},
 skills : {
  skill     : String,
  level     : Number
 }
}
我可以像这样为用户添加新技能:完全按照预期工作

app.post( '/addskill', function ( req, res ) {
    var newskill = {skill : req.body.skill,  level : req.body.level};
    User.findByIdAndUpdate( req.user.id,
     { $push: { skills: newskill }}, 
     function (err, user ) {
      res.redirect('/profile');
    });
});
我可以轻松访问ejs文件中的电子邮件和密码字符串,如下所示:

<%= user.local.email %>
<%= user.local.password %>
我可以获得以下格式的所有技能:

[ { skill: 'qwe', level: 1 }, { skill: 'html', level: 1 }, { skill: 'python', level: 4 } ]
再说一遍,这正是我要找的。我现在要做的是创建一个表,列出技能和级别

所有数组方法似乎都不起作用 我尝试了ejs模板文件

user.skills.forEach()  -- not working 'user' is null
user.forEach --  works to create a list of users.
user.skills[0].skill  -- not working
user.skills[i].skill -- in var loop, not working
以下是错误消息:

Object [ { skill: 'qwe', level: 1 }, { skill: 'html', level: 1 }, 
{ skill: 'python', level: 4 } ] has no method 'forEach' at eval ...
所以我的问题是:如何访问这个集合(数组)中的键值对


谢谢

因此,这里的解决方案是在mongoose模型中定义一个数组:

我所要做的就是将[]添加到“技能”部分:

{ 
 local : {
   email     : String,
   password  : String
},
 skills : [{
  skill     : String,
  level     : Number
 }]
}

现在所有的数组方法都工作了

skills
不应该被定义为模式中的数组吗?这就解决了问题!!!非常感谢。
{ 
 local : {
   email     : String,
   password  : String
},
 skills : [{
  skill     : String,
  level     : Number
 }]
}