2017-12-28 15 views
0

私はMongooseからオブジェクトを取得しようとしていますが、取得して値を取得するためにキーでJsonオブジェクトにアクセスしようとすると、定義されません。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を取得します。誰か助けてもらえますか

答えて

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); 
      }); 
}); 

は、上記変数辞書自体が、辞書を含む配列ではない

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"); 
     }); 
関連する問題