使用节点js和mongodb获取特定值

时间:2016-08-22 06:28:12

标签: javascript node.js mongodb

我必须尝试使用​​Node.js从MongoDB获取字段值。但它在我的控制台中显示undefined。我的要求是使用Node.js从MongoDB打印控制台或浏览器中的数据。

1)。这是我的节点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)。这是我的js-schema

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

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 :(得分: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);
}

答案 1 :(得分:0)

我可能不正确但看起来你试图访问对象属性而结果是一个集合,请参阅:

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

VS

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))也可以派上用场进行简单的调试,更不用说节点检查员。