Mongoose for var in 子文档中的循环
Mongoose for var in loop in subdocuments
我用 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' } ] }
所以,当我想用 for var in
循环结构迭代子文档 socialAccounts
并用 console.log()
查看数据时,它 returns 一些其他对象和功能 & 只有第一个是子文档对象。
如何使用此 for 循环迭代方法仅获取 socialAccounts
子文档的第一个元素。
谢谢
使用索引 for
循环,而不是 for
… in
:
for (let i = 0; i < socialAccounts.length; i++) {
var currentAccount = socialAccounts[i];
}
for
… in
循环将枚举您注意到的其他对象属性,不应将其用于数组。请参阅 this 个问题和答案。
尝试
.findOne(...() => {})
对我有用
我用 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' } ] }
所以,当我想用 for var in
循环结构迭代子文档 socialAccounts
并用 console.log()
查看数据时,它 returns 一些其他对象和功能 & 只有第一个是子文档对象。
如何使用此 for 循环迭代方法仅获取 socialAccounts
子文档的第一个元素。
谢谢
使用索引 for
循环,而不是 for
… in
:
for (let i = 0; i < socialAccounts.length; i++) {
var currentAccount = socialAccounts[i];
}
for
… in
循环将枚举您注意到的其他对象属性,不应将其用于数组。请参阅 this 个问题和答案。
尝试
.findOne(...() => {})
对我有用