Проверка логина с помощью mongodb - PullRequest
0 голосов
/ 25 мая 2018

Я начинаю изучать монго, чтобы создать небольшую форму авторизации.В настоящее время я застрял в этой точке, где я пытаюсь сравнить свое имя пользователя, полученное из запроса POST, со значением в базе данных, пример кода, который мне запомнился, приведен ниже.

app.post('/login', urlencodedParser, function(req, res){
username = req.body.username;
password = req.body.password;
MongoClient.connect(urldb, function(err, db){
    var dbo = db.db('LCC');
    var query = {_id: username, password: password}
    var output = dbo.collection('Users').find(query)
    if(output == username){
        console.log('Found');
    }else{
        console.log('Not found');
    }
    db.close();
    res.end();
});

});

Я не уверен, что используемый метод поиска является наилучшим / подходящим для этого случая, но похоже, что он работает, вопрос в том, как я работаю с объектом, который возвращается мне, когдаЯ делаю это .find (запрос)?Это тот, который нужно сравнить, или я совершенно не в том направлении?

Только что опубликовал этот образец, потому что я думаю, что этого достаточно, но при необходимости я покажу больше.Заранее спасибо.

1 Ответ

0 голосов
/ 25 мая 2018

в вашем коде несколько проблем

измените ваш запрос с

var query = {_id: username, password: password}

на

var query = {username: username, password: password}

тогда вместо использования .find(query) используйте .findOne(query), потому что find возвращает массив объектов.

тогда, потому что запрос асинхронный , вы не должны назначать его как var output = dbo.collection('Users').find(query) вместо использования callback функция, подобная этой

  dbo.collection('Users').find(query, function(err, user){
      if(err) throw new Error(err);
      if(!user) 
        console.log('Not found');
      else 
        console.log('Found!');
  })

, похоже, вы новичок в node.js.перейдите в w3school https://www.w3schools.com/nodejs/nodejs_mongodb_query.asp, чтобы получить более полное представление о том, как работают node и mongodb

...