繁体   English   中英

出现错误无法在提交表单时 POST /public/register-controller

[英]Getting error Cannot POST /public/register-controller on submitting the form

我正在使用 express js mysql 和 node js 创建和登录注册系统,所以只要我点击提交按钮,我就会收到如下错误:

无法 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>

我的 config.js

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

我的 register-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" });
    });
};

我的身份验证控制器.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"
                });
            }
        }
    });
};

所以任何帮助为什么我的文件没有获得寄存器控制器的路径并且我收到此错误,请帮助我我对节点和表达很陌生

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM