6

我创建了这个架构mongoose Schema

socialAccount =  new Schema({
    socialNetwork : { type : String , required : true},
    userid : { type : Number,  required :  true },
    username : String
},{_id : false});
person = new Schema({
    id : { type : Number,  unique : true, required : true , dropDups :  true },
    firstname : String,
    lastname : String,
    socialAccounts : [socialAccount],
    updated : { type : Date, default : Date.now },
    enable : { type : Boolean , default : true },       
});

当我使用findOne方法获取数据时,结果如下所示(在console.log()):

{ 
  id: 1,
  firstname: 'example name',
  lastname: 'example last',
  enable: true,
  updated: Thu Sep 24 2015 09:40:17 GMT+0330 (IRST),
  socialAccounts: 
   [ { socialNetwork: 'instagram',
       userid: 1234567,
       username: 'example' } ] }

所以,当我想socialAccountsfor var in​​循环结构迭代子文档并查看数据时console.log(),它返回一些其他对象和函数,只有第一个是子文档对象。
如何socialAccounts使用此 for 循环迭代方法仅获取子文档的第一个元素。

谢谢

4

2 回答 2

10

使用索引for循环,而不是for... in

for (let i = 0; i < socialAccounts.length; i++) {
    var currentAccount = socialAccounts[i];
}

for...循环将枚举您注意到的in其他对象属性,不应用于数组。请参阅问题和答案。

于 2015-09-24T06:25:27.337 回答
0

尝试

.findOne(...() => {})

它对我有用

于 2019-06-21T16:04:29.297 回答