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);
希望有所帮助。
谢谢