首页 > 解决方案 > Mongoose Schema,存储一个可能有也可能没有属性的对象

问题描述

我正在查询 API 以获取电视剧集的结果并将它们保存到我的 mongodb 集合中。代码如下:

let episode = JSON.parse(response);
                        for(let j=0;j<episode.length;j++){
                          let newEpisode = {
                            title: episode[j].name,
                            number: episode[j].number,
                            season: episode[j].season,
                            date: episode[j].airdate,
                            duration: episode[j].runtime,
                            poster: episode[j].image.medium,
                            description: episode[j].summary
                          }

                          show.episodes.unshift(newEpisode);
                        }
                        show.save()

问题在于海报变量。API 要么返回一个包含两个字符串的对象:

poster:
   medium: 'url-to-image'
   original: 'url-to-image'

或者它返回值为 null 的海报。

有没有办法将海报保存在集合中,以便如果它们存在则保存两个字符串,如果不存在则保存 null?它不会让我将它转换为数组,如果我尝试保存上面代码中的属性之一,我会收到错误“无法读取 null 的属性 'medium'”。

标签: javascriptnode.jsmongodbmongoose

解决方案


在您的对象 Schema / Mongoose 模型中,将您的海报定义为一个数组并在您的帖子中突出显示的代码部分中执行相同的操作:

 poster: [
     episode[j].medium,
     episode[j].original
    ]

也许尝试从中删除“图像” poster: episode[j].image.medium


推荐阅读