簡體   English   中英

無法查詢從Mongodb返回的類似數組的對象

[英]cannot query array-like object returned from Mongodb

使用node.js / express和mongoose(mongodb)和護照。 我在獲取類似返回的數組的鍵/值對時遇到麻煩。 用戶模型:

{ 
 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 %>

當我查詢數據庫

user.skills

我可以通過以下格式獲得所有技能:

[ { 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 ...

所以我的問題確實是:如何訪問此集合中的鍵值對(數組?)

謝謝!!

所以這里的解決方案是在貓鼬模型中定義一個數組:

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

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

現在所有的數組方法都可以使用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM