Ritesh Kumar
Ritesh Kumar

Reputation: 79

fetch a particular value using node js and mongodb

I have to try to fetch a field value from MongoDB using Node.js. But it shows me undefined in my console. My requirement is to print the data in the console or browser from MongoDB using Node.js.

1). This is my node js

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). This is my js-schema

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

3).This is my console output

undefined

4). This is my JSON data

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

Upvotes: 0

Views: 2025

Answers (2)

Daphoque
Daphoque

Reputation: 4678

Simply use findOne(find return an array of document) with a project field(return only desired fields).

And don't forget to check the err field !

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

Upvotes: 2

Maciej Smoliński
Maciej Smoliński

Reputation: 326

I might be incorrect but it looks like you're trying to access object property while the result is a collection, see:

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

vs

data[0].min_score

What you want to achieve is something like:

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

console.log(scores);

You can always check the type of result with console.log(typeof data) or simply write console.log(data), sometimes console.log(Object.keys(data)) come in handy as well for simple debugging not to mention node-inspector.

Upvotes: 0

Related Questions