我试图从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'])
and我仍然得到undefined
。有人可以帮帮我吗
上面的parse
变量本身不是字典,而是包含字典的数组。你应该做什么来访问代码字段首先访问字典,然后得到代码字段,如;
parse[0].code
要么
parse[0]['code']
您无需解析或字符串化返回的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");
});