Mongoose返回[Object]而不是实际的嵌入文档

时间:2014-07-28 20:49:11

标签: node.js mongodb mongoose

当我在集合中填充引用时,引用集合中的嵌入文档显示为[Object]而不是实际文档。

更多详情

我有一个Song Schema

var songSchema=new Schema({
    songName:String
});

专辑架构

 var albumSchema=new Schema({
    title:String,
    favs:Number,
    songs:[songSchema]
})

以及引用相册的播放列表架构。

  var playlistSchema=new Schema({
    title:String,
    items: { type: Schema.ObjectId, ref: 'Album' }
})

现在我运行以下查询

 Playlist
 .find()
 .populate('items')
 .exec(function (err, playlists) {
  if (err) return handleError(err);
  console.log("Result:"+playlists);
  })

我得到以下结果

Result:{ _id: 53d6b605842416b83b5fe472,
  title: 'Sad',
  items: 
   { _id: 53d6b605842416b83b5fe471,
     title: 'Awaz',
     favs: 500,
     __v: 0,
     songs: [ [Object], [Object] ] },
  __v: 0 }

注意songs数组如何具有[Object]数组而不是实际的嵌入对象。我如何获得实际文件?

1 个答案:

答案 0 :(得分:2)

"歌曲"嵌套超过2个级别,因此默认情况下输出由" [Object"]表示。试着这样做:

playlists[0].songs.forEach(function (song) {
  console.log(song);
});

如果您使用快递。

app.get('/playlists', function (req, res, next) {
  mongoose.model('Playlist').find().populate('items').exec(function (err, docs) {
    if (err) return next(err);
    res.json(docs);
  })
});