node.js - 浏览器在 localhost 上等待 POST 请求

标签 node.js mongodb express post

我正在构建一个网站,我有一个注册表单,我需要通过 POST 提交表单,并在 mongoDB 数据库中注册用户。到目前为止,该网站运行良好,但当我提交注册表单时,浏览器只是永远“等待本地主机”。我使用 EJS 作为我的模板引擎,尽管我认为这并不重要。

注册.ejs:

<% include partials/header %>
<%include partials/nav %>
<h1>REGISTER</h1>
<a href="/login">Login</a>

 <form  id="registerForm" action="/register" method="post">
            <div class="form-group">
                <label for="exampleInputEmail1">Email address</label>
                <input type="email" name="username" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
                <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
            </div>
            <div class="form-group">
                <label for="exampleInputPassword1">Password</label>
                <input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
                <small id="passwordHelp" class="form-text text-muted">Your password must be at least 8 characters long.</small>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
<% include partials/footer %>

app.js:

var express = require('express'),
    app = express(),
    mongoose = require('mongoose'),
    passport = require("passport"),
    bodyParser = require("body-parser"),
    User = require("./models/user"),
    LocalStrategy = require("passport-local"),
    passportLocalMongoose = require("passport-local-mongoose");

//Set up MongoDB
var mongo = require("mongo");
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://localhost:27017/customerapp';
//MongoJS
var mongojs = require("mongojs");
var db = mongojs("customerapp", ["users"]);
//Mongoose
var mongoose = require('mongoose');
mongoose.Promise = global.Promise
mongoose.createConnection("mongodb://localhost:27017/customerapp");
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(require("express-session")({
    secret: "wah wah wah",
    resave: false,
    saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());

passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());


var index = require("./routes/index");
var about = require("./routes/about");
var login = require("./routes/login");
//var register = require("./routes/register");

app.all("index", index);
app.all("about", about);
app.all("login", login);
//app.all("register", register);

// AUTH Routes
//Register get request
app.get("/register", function(req, res) {
    res.render("register");
});

//Handle post register req. at '/register'
app.post("/register", function(req, res) {
    User.register(new User({
        username: req.body.username}),
        req.body.password,
        function(err, user) {
            if(err) {
                console.log(err);
                return res.render("register");
            }
            passport.authenticate("local")(req, res, function() {
                res.redirect("/secret")
            })
    });
});
app.listen(process.env.PORT || 3000, process.env.IP, function () {
  console.log('Example app listening on port 3000!')
})

最佳答案

您使用三个参数而不是两个,像这样使用它。

//Handle post register req. at '/register'
app.post("/register", function(req, res) {
    User.register(new User({
        username: req.body.username,
        password: req.body.password
        }),
    function(err, user) {
        if(err) {
            console.log(err);
            return res.render("register");
        }
        passport.authenticate("local")(req, res, function() {
            res.redirect("/secret")
        })
 });
});

关于node.js - 浏览器在 localhost 上等待 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45925314/

相关文章:

node.js - 创建包含 TypeScript 中所有导出的模块

javascript - Node.js Mongoose 是否允许您通过用户/密码连接到数据库?

node.js - 使用这个简单的 Node 获取查询时如何解决 ERR_REQUIRE_ESM 错误?

javascript - 如何返回符合 Mongodb 给定条件的子文档数组?

node.js - 部署到 Heroku 时无法使用 Google OAuth 登录

node.js - 使用 neo4j JS 驱动程序的套接字挂断

node.js - Cloudbees 上的 NodeJS v4 或 io.js

mongodb - 使用 NoSQL 文档存储数据库有哪些实际用例?

php - laravel mongodb 关闭客户端连接 剩余数据太小

node.js - 如何使用express和multer将图像从Angular发送到Node JS?