记录json数据时,nodejs和mongoose返回undefined

时间:2017-06-09 15:23:16

标签: javascript json node.js mongoose mongodb-query

我有一个从mongoose表返回json数据的函数。首先插入一个newpost,然后通过post._id检索相同的帖子。

   dbConfig.newPost(post,id,function (err,post) {
         if(err) throw(err);
         dbConfig.getPostById(post._id,function (err,doc) {
            if(err) throw err;
            var data = JSON.stringify(doc);
             console.log(data);
             console.log(data._id);
         });

     });

查询将数据变量打印为JSON中的对象数组,但是当我尝试仅打印' data._id'它返回undefined。有谁知道我做错了什么? json数组的片段在

之下
[{"_id":"593ab877777ae318e4a35637","userPost":"savassge","_creator":{"_id":"592b8c2d0c28f01970ad4df7","username":"adrian"},"__v":0,"dateCreated":"2017-06-09T15:02:15.716Z"}]

2 个答案:

答案 0 :(得分:0)

因为没有“data._id”。有“data [0] ._ id”。您正在尝试访问对象数组,而不是对象。

答案 1 :(得分:0)

首先

var data是一个字符串,不是对象也不是数组,因为您要将JSON.stringify(doc)的返回值分配给data变量。 JSON.stringify()方法将JavaScript值转换为JSON字符串:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

其次

您正在尝试访问doc数组的不存在的属性,此问题中所示的属性存在于数组中的每个对象中。为了打印每个对象的_id属性(假设你想做什么),你需要首先迭代数组:

dbConfig.newPost(post, id, function (err, post) {
  if(err) throw(err);
  dbConfig.getPostById(post._id, function(err, data) {
    if(err) throw err;
    data.forEach(function(doc) {
      console.log(doc);
      console.log(doc._id);
    });
  });
});