通过param node.js找到

时间:2016-05-13 09:22:31

标签: javascript node.js mongodb

我正在尝试使用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)}...)

但为什么?

2 个答案:

答案 0 :(得分:1)

因此,假设req.params.id实际上有一个值而/getAll显示所有记录都设置了id字段,那么跳出来的唯一事情就是您的比较反序列化后,stringNumberreq.params.id将成为字符串,但您的架构规定id字段为数字。

我不确定mongoose是否使用强制比较即==而不是===(我对此表示怀疑),所以为了更准确,你应该将你的字符串解析为Number然后做比较例如

Stud.find({ id: parseInt(req.params.id)}, ...)

答案 1 :(得分:0)

查询子句中的函数可能不起作用,因此转换为Number只需执行:

Stud.find({ id: 1*req.params.id}, ...)