2017-06-09 8 views
-1

私はmongooseテーブルからjsonデータを返す関数を持っています。最初にnewpostを挿入し、post._idで同じポストを取得します。jsonデータのログにnodejsとmongooseが返されない場合

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内のオブジェクトの配列としてデータ変数を出力しますが、私はそれがundefinedを返します「data._id」を印刷しようとします。誰かが私が間違っていることを知っていますか? json配列のスナップは、以下の通りです。

[{"_id":"593ab877777ae318e4a35637","userPost":"savassge","_creator":{"_id":"592b8c2d0c28f01970ad4df7","username":"adrian"},"__v":0,"dateCreated":"2017-06-09T15:02:15.716Z"}] 
+0

てみてください - 'はconsole.log(データ[0] ._id); ' –

答えて

0

まず

var dataは、文字列ではなく、オブジェクトや配列です。あなたが示すように、このプロパティを次に

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

あなたのdoc配列の非存在しないプロパティにアクセスしようとしている。JSON.stringify()メソッドは、JSON文字列にはJavaScript値に変換しますあなたの質問は配列内の各オブジェクトに存在します。 (それはあなたがやりたいものだと仮定して)、各オブジェクトのプロパティ_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); 
    }); 
    }); 
}); 
+0

ありがとうございましたが、私の問題はfindOne()の代わりにfind()を使用してドキュメントを取得し、オブジェクトの配列を返すことでした – Adrian

0

「data._id」はありません。 "data [0] ._id"があります。オブジェクトではなくオブジェクトの配列にアクセスしようとしています。あなたはdata変数にJSON.stringify(doc)の戻り値を代入しているよう

+0

本当にありがとうございました。本当の問題を見つけるのに役立ちました。私は存在しないオブジェクトの配列を返すfindメソッドを使用していました。私はfindOneを使用して単一のドキュメントのみを返します。 – Adrian

+0

あなたは大歓迎です;) – sidewinder

関連する問題