查找查询语法误解

时间:2017-11-04 10:53:12

标签: node.js mongodb express

我是nodejs和mongodb的新手。下面我尝试根据用户名和密码搜索某个帐户。如果是真正的控制台,他们的详细信息会重定向到(' / main')路由。路线没有错。我正在使用mlabs,其中project1是我的集合的名称。我认为我的查询查询中的所有内容都出错,但我无法弄清楚是什么。

Schema :-
{
   "_id": "id",
   "UserName": "UserName",
   "Password": "Password"
}

app.js

 MongoClient.connect(url , function(err,db){
    if (err) return;

        app.post('/login' , urlencoder , function(req,res){     
            var user = { 
                UserName : req.body.UserName ,
                Password : req.body.Password
            };
            db.collection('project1').find({user}).forEach(function(pes){   
                    if(true)
                    {
                       console.log(pes);
                    }
                    else
                    {
                       res.redirect('/main');
                    }
            });
        });
});

1 个答案:

答案 0 :(得分:1)

您的逻辑中存在几个问题

  1. 您应该在实际启动服务器之前尝试连接到mongodb

    let globalDb;
    MongoClient.connect(url,function(err,db){
       if(!err) {
          globalDb = db;
          app.listen(3000, () => {
            console.log('Server listening on port 3000');
          });
       }
    })
    
  2. 您的查找查询不应该传递嵌套的用户字段{user},而应该传递

    app.post('/login' , urlencoder , function(req,res){     
        var user = { 
            UserName : req.body.UserName ,
            Password : req.body.Password
        };
    
        globalDb.collection('project1').find(user)(function(err,data){                       
             if(data) {
                   // user exist
                   // do something 
             }
        });
    });