我正在尝试使用find函数从mLab中的数据库中获取数据。我写了这段代码,但我得到一个空字符串。 我的架构有id,名称,课程和成绩。 当我想要名字的文件而不是id时,它适用于我。我想这是因为mLab添加了额外的_id文件。 如何修复它以获取适合id的JSON(假设id = 1)?
app.get('/getStudentById/:id', function(req, res) { //else if url path is getStudGrade with id param
Stud.find({id:req.params.id}, function(err, user){
if(err) throw err;
res.json(user);
mongoose.disconnect();
});
})
我已在我的数据库中将已提交的'id'更改为'idStudent',现在它正在运行。
Stud.find({ idStudent: req.params.id)}...)
但为什么?
答案 0 :(得分:1)
因此,假设req.params.id
实际上有一个值而/getAll
显示所有记录都设置了id
字段,那么跳出来的唯一事情就是您的比较反序列化后,string
到Number
即req.params.id
将成为字符串,但您的架构规定id
字段为数字。
我不确定mongoose是否使用强制比较即==
而不是===
(我对此表示怀疑),所以为了更准确,你应该将你的字符串解析为Number
然后做比较例如
Stud.find({ id: parseInt(req.params.id)}, ...)
答案 1 :(得分:0)
查询子句中的函数可能不起作用,因此转换为Number
只需执行:
Stud.find({ id: 1*req.params.id}, ...)