我正在使用Node.js遍历Artist
从Mongoose获得的一系列结果:
User.find({UserType: "Artist"}, '_id Firstname BIO list_artworks').then((artists) =>{
for (var i=0; i < artists.length; i++){
console.log(artists[i]);
}
})
上面的代码可以查找并打印出Artists
我要求的所有三个属性。
编辑:这是我在控制台中看到的示例:
{
_id: 'T8fdSmf0e1ua',
BIO: 'This is Susan's bio...\n',
Firstname: 'Susan',
list_artworks: [
'ID ONE',
'ID TWO',
...
]
}
但是,当我尝试访问包含Artwork
ID数组的属性时,使用console.log()
以下命令无法定义所有内容:
for (var i=0; i < artists.length; i++){
console.log(artists[i].list_artworks);
}
当我访问Artist的其他属性(例如BIO
或)时Firstname
,它将成功打印到控制台:
for (var i=0; i < artists.length; i++){
console.log(artists[i].BIO);
}
为什么会这样呢?考虑到所有对象都在then()
链中返回,在这种情况下,我认为这与异步代码无关。list_artworks
如果我打印整个artist
对象,该属性显然就在那里,但是为什么当我尝试访问它时它是未定义的?
这是另一个例子。我先打印每个属性,然后再打印对象本身:
console.log(artist.BIO);
console.log("---------------")
console.log(artist.Firstname);
console.log("---------------")
console.log(artist.list_artworks);
console.log("---------------")
console.log(artist)
这是我的控制台上打印的内容:
---------------
Mike
---------------
undefined // <--- when I access the property itself
---------------
{
_id: '599asdsdasd232d23d2',
Firstname: 'Mike',
BIO: '',
list_artworks: // <-- why does it show up here?
[ '6cohpx7d23asu',
'W4Fgs23X5aXds',...
这是我的整个代码库:
setTimeout(function(){
User.find({UserType: "Artist"}, '_id Firstname BIO list_artworks').then((artists) =>{
console.log(artists.length);
for (var i=0; i < artists.length; i++){
artist = artists[i];
console.log(artist.BIO);
console.log("---------------")
console.log(artist.Firstname);
console.log("---------------")
console.log(artist['list_artworks']);
console.log("---------------")
console.log(artist)
}
}
).catch((err)=>{console.log(err)});
}, constants.NLP_TRAINING_INTERVAL);
呼吁toObject
艺术家:
artist = artists[i].toObject();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句