Mongo中的对象子项存储为不同的对象而不是一个对象

时间:2016-11-29 14:18:32

标签: javascript mongodb

当我查询其中包含数组的文档时,它看起来像:

{
    "profile_youtube_videos[sYi7uEvEEmk][thumbnail_url]":"https://i.ytimg.com/vi/sYi7uEvEEmk/mqdefault.jpg",
    "profile_youtube_videos[sYi7uEvEEmk][title]":"Bill Withers - Lovely Day (Original Version)",
    "profile_youtube_videos[sYi7uEvEEmk][video_url]":"https://www.youtube.com/watch?v=sYi7uEvEEmk"
}

自然而不是profile_youtube_videos是关键,而sYi7uEvEEmkprofile_youtube_videos的子关键字,依此类推。就像它的到来一样:

{sYi7uEvEEmk: 
    {
        thumbnail_url:"https://i.ytimg.com/vi/sYi7uEvEEmk/mqdefault.jpg",
        title:"Bill Withers - Lovely Day (Original Version)",
        video_url:"https://www.youtube.com/watch?v=sYi7uEvEEmk"
    }
}

我使用mongo的save(object)函数来保存/覆盖文档。

db.users.save(user, function (err, response) {
  if (err) {
    return res.json(err);
  }

  return res.json(response);
});

文档通过POST请求进入,作为运行良好的JS对象。 例如:

  $.ajax({
    url: 'example.com/users',
    type: 'POST',
    data: user, // good object
    // dataType: 'json', same result commented or not
    success: function (response) {
      // success all the time
      console.log('Save user via nodejs api response: ', response);
    },
    error: function(jqXHR, textStatus, errorThrown) {
      // just in case there's an error.
      console.log('Save user via nodejs api error response');
      console.log(textStatus, errorThrown);
    }
  }); 

1 个答案:

答案 0 :(得分:0)

  • 检查通过浏览器检查的POST参数。
  • 它应该提交JSON。

使用以下代码:

    $.ajax({
    type:"POST",
    dataType : 'json',
    url : 'example.com/users',
    data : JSON.stringify(json_data),
    contentType: 'application/json; charset=utf-8',
    success: function (response){ 
        var response = response;
      },
  });// close ajax