嵌入文档在 node.js 后变为空

Embedded document becomes null in node.js

我有一个嵌入文档如下:

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' 
}

我不知道为什么 artists value 在 case 中变为 null。

编辑:

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 时,这就是问题所在。

你的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'
}

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

那么,解决方案是:

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

希望有所帮助。

谢谢