记录 json 数据时,nodejs 和 mongoose 返回 undefined
Posted
技术标签:
【中文标题】记录 json 数据时,nodejs 和 mongoose 返回 undefined【英文标题】:nodejs and mongoose return undefined when logging json data 【发布时间】:2017-11-11 16:34:08 【问题描述】:我有一个函数可以从 mongoose 表中返回 json 数据。它首先插入一个新帖子,然后通过 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”时,它返回未定义。有谁知道我做错了什么? json数组的片段如下
["_id":"593ab877777ae318e4a35637","userPost":"savassge","_creator":"_id":"592b8c2d0c28f01970ad4df7","username":"adrian","__v":0,"dateCreated":"2017-06-09T15:02:15.716Z"]
【问题讨论】:
试试 --console.log(data[0]._id);
【参考方案1】:
因为没有“data._id”。有“数据[0] ._id”。您正在尝试访问一个对象数组,而不是一个对象。
【讨论】:
非常感谢它帮助我找到了真正的问题。我正在使用 find 方法返回不存在的对象数组。我使用了 findOne,它只返回一个文档。【参考方案2】:首先
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);
);
);
);
【讨论】:
非常感谢,但我的问题是我使用 find() 来检索文档而不是 findOne() 导致它返回一个对象数组以上是关于记录 json 数据时,nodejs 和 mongoose 返回 undefined的主要内容,如果未能解决你的问题,请参考以下文章
如何使用mongodb中的nodejs下载超过500k记录的整个集合作为csv?