javascript - 提交表单时出现错误 Cannot POST/public/register-controller

标签 javascript mysql node.js express

我正在使用 express js mysql 和 node js 创建和登录注册系统,所以当我点击提交按钮时,我得到一个错误:

Cannot POST /public/register-controller

我的 index.html

 <!DOCTYPE html>
    <html lang="en">

    <head>
        <title>SignUp</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="style.css" rel="stylesheet">
        <link href="signup.css" rel="stylesheet">
    </head>

    <body>
        <header class="masthead">
            <div class="boards-menu"></div>
            <div class="logo">
                <h1><i class="fab fa-trello logo-icon" aria-hidden="true"></i>Trello</h1>
            </div>
        </header>
        <section class="signup-login">
            <form action="/public/register-controller" method="POST">
                <div class="username">
                    <input type="text" placeholder="User Name" name="name"></input>
                </div>
                <div class="username">
                    <input type="email" placeholder="Email" name="eamil"></input>
                </div>
                <div class="username">
                    <input type="password" placeholder="Password" name="password"></input>
                </div>
                <div class="button-signup-login">
                    <button class="add-card-btn btn">Sign Up</button>
                    <a class="signup-navigator" href="login.html">already a
                        user?</a>
                </div>

            </form>
        </section>

    </body>

    </html>

我的配置文件

 var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'trello',
    password: 'trello',
    database: 'trello'
});
connection.connect(function (err) {
    if (!err) {
        console.log("Database is connected");
    } else {
        console.log("Error while connecting with database");
    }
});
module.exports = connection; 

我的 index.js

 var express = require("express");
    var path = require('path');


    var bodyParser = require('body-parser');

    var connection = require('./config');
    var app = express();

    var authenticateController = require('./public/authenticate-controller');
    var registerController = require('./public/register-controller');
    var dir = path.join(__dirname, 'public');
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(express.static(dir));
    /* route to handle login and registration */
    app.post('/api/register', registerController.register);
    app.post('/api/authenticate', authenticateController.authenticate);

    console.log(authenticateController);
    app.post('/public/register-controller', registerController.register);
    app.post('/public/authenticate-controller', authenticateController.authenticate);
    app.listen(8012);

我的注册 Controller .js

var connection = require('/home/codemymobile/study/trello/config');
var Cryptr = require('cryptr');
var express = require("express");
var cryptr = new Cryptr('myTotalySecretKey');
module.exports.register = function (req, res) {
    var encryptedString = cryptr.encrypt(req.body.password);
    var sql = 'insert into users(name, email, password) values ?';
    var values = [[req.body.name, req.body.email, encryptedString]];
    connection.query(sql, [values], function (err, result) {
        if (err) throw err;
        console.log("Number of records inserted: " + result.affectedRows);
        res.status(200).send({ error: false, message: "User has been created successfully" });
    });
};

我的 authenticate-controller.js

var Cryptr = require('cryptr');
cryptr = new Cryptr('myTotalySecretKey');

var connection = require('./../config');
module.exports.authenticate = function (req, res) {
    var email = req.body.email;
    var password = req.body.password;


    connection.query('SELECT * FROM users WHERE email = ?', [email], function (error, results, fields) {
        if (error) {
            res.json({
                status: false,
                message: 'there are some error with query'
            });
        } else {

            if (results.length > 0) {
                decryptedString = cryptr.decrypt(results[0].password);
                if (password == decryptedString) {
                    res.json({
                        status: true,
                        message: 'successfully authenticated'
                    });
                } else {
                    res.json({
                        status: false,
                        message: "Email and password does not match"
                    });
                }

            }
            else {
                res.json({
                    status: false,
                    message: "Email does not exits"
                });
            }
        }
    });
};

所以任何帮助,为什么我的文件没有得到寄存器 Controller 的路径,我得到这个错误,请帮助我,我对 Node 和表达很陌生

最佳答案

我认为您在 html 表单中犯了一个较小的错误,您在名称中使用 eamil 而不是电子邮件,即 name="eamil"而不是 name="email",要么在这里更改它,要么更改您的名称正在调用你的 js 文件

关于javascript - 提交表单时出现错误 Cannot POST/public/register-controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57768884/

相关文章:

javascript - 获取跨域 iframe 反馈

javascript 添加迄今为止的天数,但它显示旧日期月份

mysql - 为什么 SQLyog 返回 MySQL 查询结果的速度比我的 Delphi 程序快 10 倍?

mysql - 使用 InnoDB 存储引擎使用 phpMyAdmin 重新排序列不起作用

mysql - 需要 mysql 查询才能在单个查询中获取学生通过、失败和计数

javascript - 使用for循环在.docx文件中使用js和npm docx写一段

javascript - 在同构 javascript 中处理 HTTP 请求

javascript - 将此 PHP RS232 代码移植到 Node.js

javascript - nicedit Enter 生成段落 (p) 而不是换行符 (br)

javascript - Mocha hooks 不仅在 WebStorm 中被部分识别