将函数的json结果保存在javascript对象中

时间:2019-03-15 09:50:38

标签: node.js function object mongoose

我是nodejs和javascript的初学者,我尝试制作一个应用程序,但遇到了问题。 所以我使用nodejs express和mongodb  和我有一个函数,有两个参数err和result。 后者(结果)是一个json文件,其中包含以下元素(标题,URL,描述,publishdAt,King,etage,id ....)。 我正在寻找的是创建一个对象,并仅在该对象中保存四个元素(标题,URL,描述,publishdAt)。 我创建了一个数据库(视频),一个架构(videoSchema)和一个集合(collectionVideos),

这是我的代码:

youTube.search(Query, 5, function(error, result) {

            if (error) {
                console.log(error);
            } else {
                var convertedToJson = JSON.stringify(result, null, 2)
                console.log(convertedToJson);

                a = convertedToJson.title
                b = convertedToJson.url
                c = convertedToJson.descriptionb
                d = convertedToJson.publishedAt
                post = new videosNews({
                    "title": a,
                    "url": b,
                    "description": c,
                    "publishedAt": d
                })
                console.log(post)
                post.save(function(err, data) {
                    if (err) {
                        console.log('rong')
                    } else {
                        console.log('save')
                    }
                })
            })

此代码不会产生任何错误,但是不会创建对象 这是我的console.log的结果: enter image description here 预先谢谢你

1 个答案:

答案 0 :(得分:0)

首先删除stringify函数。您不需要它。

还请注意,所需的元素不在结果的根目录中,而是在items属性的snippet对象数组下。

下面的示例仅获取第一项。

youTube.search(Query, 5, function(error, result) {
  if (error) {
    console.log(error);
  } else {
    var snippet = result.items[0].snippet;
    post = new videosNews ({
      title: snippet.title,
      url: snippet.url,
      description: snippet.description,
      publishedAt: snippet.publishedAt
    })
    console.log(post)
    post.save(function(err, data) {
      if(err){console.log('rong')}
      else {console.log('save')}
    })
  }
})

如果您知道items数组中有多个项目,请考虑遍历该数组并将每个项目分别保存