使用NodeJ在MongoDb中找不到具有指定参数的文档

时间:2019-06-09 11:43:01

标签: node.js mongodb

我试图找到与指定的ObjectId匹配的文档并发布,但是即使那里不存在文档,结果也总是可以返回。

这是我的下面的代码:

router.post('/check',(req,res) => {

   MongoClient.connect(dburl,{useNewUrlParser:true},(err,client) => {

            var ObjectId = require('mongodb').ObjectID;
            var uId = { _id:new ObjectId(req.body.uId)};
            var pId = req.body.pId;

            if(err){

                console.log("Error" +err);

            }else{

               var collect = client.db('Example').collection('Wishlist');

               collect.find({_id:uId,postId:pId},(err,doc) => {

                            if(err){

                            console.log("Error" +err);

                            }if(doc){

                              res.send("Available");

                            }else{

                              res.send("Not available");
                              client.close();
                           }    
                 });   
            }  

      });

});

请让我知道我做错了什么,我们将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

假设您没有中间件将req.body.pId转换为整数,并且该中间件不是数据库中的字符串值,那么您的查询将找不到任何内容。毕竟123 !== "123"。查询{_id:uId,postId:pId}当前正在搜索ObjectIdstring

将用户输入的值转换为整数:

var pId = parseInt(req.body.pId, 10);

现在查询{_id:uId,postId:pId}将搜索ObjectIdinteger


另一件事看起来很奇怪,那就是您在对象中拥有_id值。虽然在MongoDb中可以实现,但不是以下情况吗?

var uId = new ObjectId(req.body.uId);