无法从Json密钥获取值

问题描述 投票:0回答:2

我试图从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。有人可以帮帮我吗

json node.js mongoose
2个回答
1
投票

上面的parse变量本身不是字典,而是包含字典的数组。你应该做什么来访问代码字段首先访问字典,然后得到代码字段,如;

parse[0].code

要么

parse[0]['code']

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");
        });
© www.soinside.com 2019 - 2024. All rights reserved.