在浏览器中以mongoose显示嵌入式文档数据模型

时间:2016-07-09 13:45:23

标签: node.js mongodb

我在mongoose中使用嵌入式文档数据模型,我的数据就像这样

var firstuser1 = new user({userid: 'absj8d55',
  tokenid: 'akn178i3',
  media: [{mediaid: 'mid01',mediaurl:  'dl.ingrm.com/mid01'},{mediaid: 'mid03', mediaurl: 'dl.ingrm.com/mid03'}]
});

我保存它然后我想在浏览器上显示它,所以我使用这个功能:

app.get('/allmedia', function(req, res) {
user.find({},function(err, myuser) {
  res.send(myuser);
  //console.log(myuser);
})});

用户是我的模特:

var userschema = new mongoose.Schema({
userid: {type: String, unique: true},
tokenid: {type: String, sparse: true, default: null}},{
media: {
mediaid: String,
mediaurl: String
}
});
var user = mongoose.model('mydb', userschema);

你运行这段代码,但我得到的就是:

  

[{" _id":" 5780e1e5797fc3181865686b""用户ID":" absd1234"" tokenid&#34 ;: " akdndkdn12345678"}

它没有显示媒体!!

我在哪里做错了?

感谢。

1 个答案:

答案 0 :(得分:1)

userschema构造函数中,您将media对象设置为第二个参数。模式构造函数中的第二个参数是options对象。改变这个:

var userschema = new mongoose.Schema({
  userid: {type: String, unique: true},
  tokenid: {type: String, sparse: true, default: null}
},{
  media: {
    mediaid: String,
    mediaurl: String
  }
})

为:

var userschema = new mongoose.Schema({
  userid: {type: String, unique: true},
  tokenid: {type: String, sparse: true, default: null},
  media: [{
    mediaid: String,
    mediaurl: String
  }]
})

另外,正如@Saleem所提到的,在你的模型media中是一个对象,而不是一个数组。因此,将更改架构更改为:

var userschema = new mongoose.Schema({
  userid: {type: String, unique: true},
  tokenid: {type: String, sparse: true, default: null},
  media: [{
    mediaid: String,
    mediaurl: String
  }]
})