Сравнение входных данных формы с базой данных sqlite3 в node.js

#javascript #html #node.js #sqlite

#javascript #HTML #node.js #sqlite

Вопрос:

Я относительно новичок в использовании node.js и sqlite3. Я пытаюсь проверить, соответствуют ли имя пользователя и пароль, введенные в форме, тем, которые сохранены в базе данных sqlite3. Я хочу выдать сообщение об ошибке, если введенные имя пользователя / пароль не совпадают с данными в БД, в противном случае отправьте пользователя на другую страницу.

Соответствующая форма:

 <form action="/account" method="post">
            <div class="form-group">
                <label for="user">Name:</label>
                <input type="text" id="user" name="name">
            </div>
            <div class="form-group">
                <label  for="pass">Password:</label>
                <input type="password"  id="pass" name="password">
            </div>
           
            <button type="submit">Submit</button>
  

Создание базы данных и сравнение с формой:

 var db = new sqlite3.Database(':memory:');
db.serialize(function() {
        
    db.run("CREATE TABLE Accounts (id INTEGER, username TEXT, password TEXT, fullname TEXT");

    db.run(`INSERT INTO Accounts VALUES (1, "bob", "password", "Bob Bobson")`);       
    });
});
db.close();

app.get('/account', function (req, res) {
    db.all('SELECT * FROM Accounts', function(err, rows){
        rows.forEach(function (row){
           if (row.username == req.body.user)
           //go to success page

           if (row.username != req.body.usr)
         //list error
    
        });
       
        res.send();
    });
});

  

Ответ №1:

Неразумно запускать запрос и извлекать все строки из таблицы accounts. Если таблица слишком большая, это займет много времени. Лучше выполнить запрос «get» с параметрами и получить конкретную строку, если она существует. Если он существует, параметр строки в обратном вызове функции НЕ будет неопределенным.

 db.get("SELECT * from ACCOUNTS where username=? and password=?", 
 [req.body.user,req.body.password],function(err,row){
      if(typeof row!=='undefined' amp;amp; row!=null){ console.log('user exists'); }
});