embedded式文档在node.js中变为空

我有一个embedded式文件如下:

var artist = new Schema({ name: { type: String, trim:true, required:'Please fill artist name' }, role : { type: String, trim: true, default: '' }, isPrimary : { type: Boolean, trim: false, } }); 

其他文件如下:

 var AlbumSchema = new Schema({ language: { type: String, default: '', trim: true }, artists: [artist], title: { type: String, default: '', required: 'Please fill Album title', trim: true }); 

当我发送请求和prinq req.body值比我得到如下:

 { title: 'Demo Add', artists: '[{"name":"Ilesh","role":"Performer","isPrimary":true,"$$hashKey":"ob ject:227"}]', language:'EN' } 

但只要我把它作为对象

 var album = new Album(req.body); 

和打印专辑比我得到的结果如下:

 { title: 'Demo Add', artists: [], language: 'English' } 

我不知道为什么艺术家的价值在案件中变得无效。

编辑:

 exports.SaveAlbum = function(req,res){ var album = new Album(req.body); var data = _.pick(req.body, 'type') , uploadPath = path.normalize('/album_uploads') , file = req.files.file; var user = req.user; album.cover_art_path = file.path; if (user) { var upsertData = album.toObject(); delete upsertData._id; Album.update({_id: album.id}, upsertData, {upsert: true},function(err) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { res.json(album); } }); } else { res.status(400).send({ message: 'User is not signed in' }); } }; 

数组中的''存在一个问题,如下所示。 按照所述发送请求时,这就是问题的根源。

你的req.body是:

 { title: 'Demo Add', artists: '[{"name":"Ilesh","role":"Performer","isPrimary":true,"$$hashKey":"ob ject:227"}]', language:'EN' } 

它必须是:

 { title: 'Demo Add', artists: [{"name":"Ilesh","role":"Performer","isPrimary":true,"$$hashKey":"ob ject:227"}], language:'EN' } 

这个引号使艺术家成为一个string,而不是一个数组,然后在保存时失败。

那么解决的办法是:

 var album = new Album(req.body); album.artists = JSON.parse(req.body.artists); 

希望有所帮助。

谢谢