我如何使用节点js从mongodb集合中获取单个字段值

时间:2016-08-24 19:08:12

标签: javascript node.js mongodb

我正在尝试从我的收藏级别中找到单个字段值。但是当我安慰它时,它给出了一个未定义的。我也调试了这行代码,但它在node-inspector中给出了一个错误“Runtime.getProperties failed。内部错误:TypeError:无法读取未定义的属性'getters'”。 我不明白发生了什么以及如何从我的关卡收集字段中获取单个值。 我要求从级别模式,level_num字段

中仅获取单个值

1)。这是我的节点js

  this.levelChange = function(req, res, next){

  try{

    var query = {age:5};
    QuizLevel.find(query).exec(function(err, result){
      if(err) return next(err);
      var a = result.min_score;
      console.log(a);
      res.send(a);
    });
        }catch(err){
            console.log("You have error in you code");
            return next(err);
        }
    }; 

2)。这是我的关卡模式

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

3)。控制台输出

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
}

2 个答案:

答案 0 :(得分:4)

替换

var a = result.min_score;

var a = result[0].min_score;

find返回一个集合。如果您只想要一个记录,请尝试

QuizLevel.findOne(query)

答案 1 :(得分:0)

实际上'find()'返回一个数组而不是一个对象。因此,只需将代码var a = result[0].min_score;替换为var a = result[0].min_score;

即可

否则,您可以使用以下代码获取年龄= 5

的所有“min_scores”
this.levelChange = function(req, res, next){
  try {
    var query = {age:5};
    QuizLevel.find(query,{min_score:1}).exec(function(err, result){
      if(err) return next(err);
      var a = result;
      console.log(a);
      res.send(a);
    });
  }
  catch(err){
     console.log("You have error in you code");
      return next(err);
   }
};