I created this schema with 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 },
});
When i get data with findOne method the result looks like this (in 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' } ] }
SO, When i want to iterate on subdocument socialAccounts with for var in loop structure & view data with console.log(), it returns some other objects & function & only the first one is subdocument object.
How can i get only first element of socialAccounts subdocument with this for-loop iterate method.
Thanks
Use an indexed for loop, instead of a for … in:
for (let i = 0; i < socialAccounts.length; i++) {
var currentAccount = socialAccounts[i];
}
The for … in loop will enumerate additional object properties as you noticed and should not be used for arrays. See this question and answers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With