我有一个从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"}]
答案 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);
});
});
});