2016-08-22 6 views
0

Node.jsを使用してMongoDBからフィールド値を取得しようとする必要があります。しかし、それは私のコンソールにundefinedを示しています。私の要件は、Node.jsを使用してMongoDBからコンソールまたはブラウザにデータを印刷することです。ノードjsとmongodbを使用して特定の値を取得する

1)。これは私のノードです。

this.levelChange = function(req, res, next){ 
    try{ 
     var query = {'level_num':2}; 
     QuizLevel.find(query,function(err,data){ 
      var a = data.min_score; 
      console.log(a); 
      res.send(a); 
     }); 
    }catch(err){ 
     console.log("Error"); 
     return next(err); 
    } 
}; 

2)です。これは私のJS-スキーマ

{ 
    _id:{type:String}, 
    age:{type:Number}, 
    level_num:{type:String}, 
    min_score:{type:String}, 
    max_questions:{type:String} 
} 

3).Thisが私のコンソール出力

undefined 

4)です。これは私のJSONデータ

{ 
    "age":5, 
    "level_num":1, 
    "min_score":10, 
    "max_questions":30 
}, 
{ 
    "age":5, 
    "level_num":2, 
    "min_score":12, 
    "max_questions":33 
} 
+0

'console.log(data);'コンソールの出力を参照してください、データにはあなたの列が含まれていますか? –

+0

複数のレコードをデータベースで取得しているので、ループ取得データを使用する必要があります。また、index [0] .min_scoreなどのインデックスを使用することもできます。 –

答えて

0

私が間違っている可能性がありますが、あなたは結果がコレクションされている間、オブジェクトのプロパティにアクセスしようとしているように見えている、以下を参照してください。

data.min_score // => [{ ... }, { ... }].min_score 

data[0].min_score 

達成したいのは次のようなものです:

var scores = data.map((function (item) { 
    return item.min_score; 
}); 

console.log(scores); 

console.log(typeof data)で結果のタイプをいつでも確認したり、console.log(data)と書くことができます。ノードインスペクタはもちろんのこと、簡単なデバッグのために便利なものもあります。console.log(Object.keys(data))

+0

私はこれを得ています[未定義] –

2

プロジェクトフィールドでfindOne(ドキュメントの配列を返す)を使用するだけです(必要なフィールドのみを返す)。

また、エラーフィールドを確認することを忘れないでください!

try{ 
    var query = {'level_num':2}; 
    QuizLevel.findOne(query,{min_score: 1}, function(err,data){ 
     if(err || !data) 
     { 
      console.log(err); 
      return next(err); 
     } 
     else 
     { 
      var a = data.min_score; 
      console.log(a); 
      res.send(a); 
     } 
    }); 
}catch(err){ 
    console.log("Error"); 
    return next(err); 
} 
関連する問題