【发布时间】:2015-05-17 21:36:32
【问题描述】:
我有一个嵌入文档如下:
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
});
当我发送请求并打印 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'
});
}
};
【问题讨论】:
-
你在用猫鼬吗?
-
是的,我正在使用猫鼬
-
您正在更新_id ...我认为这不好!
-
目前我的问题是我没有从 req.body 获取数据到艺术家数组。除了这个按预期工作。
-
但您也进行了更新,并通过
var upsertData = album.toObject()您确定您的参数运行正确吗?我不知道你所说的 upsert 等是什么意思
标签: javascript node.js mongodb mongoose