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