我正在尝试从Mongoose获取一个对象但是当我得到它并尝试通过键访问Json对象来获取值时,我得到未定义。
User.find({name: 'auth'},function (err,obj) {
var authCode = JSON.stringify(obj);
console.log(authCode);
var parse = JSON.parse(authCode);
console.log(parse);
console.log(parse.code);
});
我得到以下输出:
[{"_id":"5a43b491734d1d45eaf2d00d","name":"auth","code":"nCAxOSrUMqxtxd8T"}]
[ { _id: '5a43b491734d1d45eaf2d00d',
name: 'auth',
code: 'nCAxOSrUMqxtxd8T' } ]
undefined
我甚至试过console.log(parse['code'])
,我仍然得到undefined
。有人可以帮助我吗
答案 0 :(得分:1)
parse
变量本身不是字典,而是包含字典的数组。你应该做什么来访问代码字段首先访问字典,然后得到代码字段,如;
parse[0].code
或
parse[0]['code']
答案 1 :(得分:0)
您无需解析或字符串化返回的JSON对象。您可以按原样使用JSON对象。
尝试以下方法
User.find({name: 'auth'},function (err,obj) {
console.log(obj);
console.log(obj.code);// this will probably be undefined as find method returns array of objects ( correct me if iam wrong)
user.forEach(function(obj,index){
console.log("index: "+index);
console.log("obj: "+obj.code);
});
});
使用promises是一种好方法
User.find({name: 'auth'})
.then((user)=>{
console.log("find success");
console.log(user);
console.log(user.code); // would return undefined as User.find will return array of objects
user.forEach(function(obj,index){
console.log("index: "+index);
console.log("obj: "+obj.code);
});
})
.catch(()=> {
console.log("find failed");
});