2017-05-31 2 views
0

Bitte helfen Sie mir, mit dem Code unten. Ich versuche, Login mit Javascript und NEDB-Datenbank zu validieren. Was mache ich falsch?Wie validiere ich die Benutzeranmeldung mit nodejs, javascript und nedb

login.html

<form name="login" onSubmit="return validateForm();" action="home.html" method="post"> 

    <input type="text" name="user" id="user" placeholder=" Enter Username" required/> 
    <br> 
    <input type="password" name="pass" id="pass" placeholder="Enter Password" required/> 
    <input type="submit" value="Login"> 

</form> 

loginvalidate.js

Dieser Code bestätigen soll, prüfen und die Datenbank für den Benutzernamen und das Passwort abgefragt werden, aber es funktioniert nicht. es geht weiter zur home.html, nachdem ok geklickt wurde, wenn der Dialog erscheint.

const database = require('../scripts/logindb'); 


    function validateForm() { 
    var user = document.loginform.user.value; 
    var pass = document.loginform.pass.value; 

    database.getAdmin(function(admin){ 

    var username = admin.username; 
    var password = admin.password; 
    if ((user == username) && (pass == password)) { 
     return false; 
    } 
    else { 
     alert ("Error , please check your username and password"); 
     return false; 
    } 

    });   
} 

logindb.js

var Datastore = require('nedb'); 

db = new Datastore({ filename: 'db/admin.db', autoload: true }); 

exports.addAdmin = function(firstname, lastname, username, password) 

{ 

var admin = { 
     "firstname": firstname, 
     "lastname": lastname, 
     "username": username, 
     "password": password 
    }; 

db.insert(admin, function(err, newDoc) { 

     if (err) throw err; 
     console.log("Table created!"); 
     db.close(); 

}); 

}; 

exports.getAdmin = function(fnc) { 

    db.find({}, function(err, docs) { 
     fnc(docs); 

    }); 
} 

Antwort

0

event als Parameter an Ihren validateForm Funktionsaufruf hinzufügen:

<form name="login" onSubmit="return validateForm(event);" action="home.html" method="post"> 

Dann in Ihrem validateForm Funktion Gebrauch preventDefault() auf den eingehenden event Parametern:

function validateForm(event) { 
    event.preventDefault(); 

    // other code here 

    return false; 
} 

Auch require ist nicht Teil des regulären JavaScript, es wird in NodeJS verwendet, um Module zu laden.

Sie benötigen, um Ihre Javascript-Dateien in Ihrem HTML laden:

<script src="../scripts/logindb"></script> 
+0

Vielen Dank für die Antwort, werde ich es ausprobieren. – Mannie411

+0

Verwenden von 'function validateForm (event) {event.preventDefault(); return false;} 'verhindert, dass die Seite aufgerufen wird. Der Code in loginvalidate.js kann die Datenbank jedoch nicht nach Benutzername und Kennwort abfragen. – Mannie411