如何使用 nodejs、javascript 和 nedb 验证用户登录

how to validate user login using nodejs, javascript and nedb

请用下面的代码帮助我。我正在尝试使用 javascript 和 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

此代码旨在验证、检查和查询数据库中的用户名和密码,但它没有。当对话框出现时单击确定后,它将继续 home.html。

  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);

  });
}

event 作为参数添加到您的 validateForm 函数调用中:

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

然后在您的 validateForm 函数中对传入的 event 参数使用 preventDefault()

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

  // other code here

  return false;
}

此外 require 不是常规 JavaScript 的一部分,它在 NodeJS 中用于加载模块。

您需要将 javascript 文件加载到 HTML:

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