Nodejs Post Form Controller

时间:2016-09-05 09:21:50

标签: node.js mongodb express

我正在NodeJS中创建一个简单的注册表,我收到此错误"无法发布/注册"。我想在NodeJS中实现MVC account_controller是我的控制器脚本,User.js模型脚本,Register.html是我的观点。

所以这些是我的代码,

Register.html

<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/login-reset.css">
    <link rel='stylesheet prefetch' href='http://fonts.googleapis.com/css?family=Roboto:400,100,300,500,700,900|RobotoDraft:400,100,300,500,700,900'>
    <link rel='stylesheet prefetch' href='http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'>
    <link rel="stylesheet" href="/login-style.css">        
  </head>

  <body>
  <div class="pen-title">
  <h1>   Please Fill In The Blanks..</h1>
  </div>
  <div class="module form-module">
  <div class="toggle"><i class="fa fa-times fa-pencil"></i>
  </div>  
  <div class="form">
    <h2>Create an account</h2>
    <form id="frm" action="/Register" method="post">
      <input type="text" placeholder="Username" name="username"/>
      <input type="password" placeholder="Password" name="password"/>
      <input type="email" placeholder="Email Address" name="email"/>
      <button>Register</button>
    </form>
  </div>
  </div>

App.js

var express = require('express');
var app = express();
var path = require('path');
var mongoose = require('mongoose');
var http = require('http').Server(app);
var io = require('socket.io')(http);

/**
 * Controllers (route handlers).
 */
const accountController = require('./controller/account_controller');

/**
 * Connect to MongoDB.
 */
mongoose.connect('mongodb://localhost:27017/chatdb');
mongoose.connection.on('error', () => {
  console.error('MongoDB Connection Error. Please make sure that MongoDB is running.');
  process.exit(1);
});

app.use(express.static(__dirname + '/views'));
app.use(express.static(__dirname + '/public'));
app.use(express.static(__dirname + '/models'));


app.get('/', function (req, res) {
   res.sendFile('index.html');
});

app.get('/', function (req, res) {
   res.sendFile('Login.html');
});

app.get('/', function (req, res) {
   res.sendFile('Register.html');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

io.on('connection', function(socket){ 

console.log('User Connected..'); 
socket.on('disconnect', function(){ 
console.log('User Disconnected..');
});

socket.on('chat', function(msg){
console.log('Mesaj: ' + msg);
io.emit('chat', msg); 
});
});

module.exports = app;

account_controller.js

const User = require('../models/Users');

/**
 * POST /signup
 * Create a new local account.
 */
exports.postSignup = (req, res, next) => {
  req.assert('email', 'Email is not valid').isEmail();
  req.assert('password', 'Password must be at least 4 characters long').len(4);
  req.sanitize('email').normalizeEmail({ remove_dots: false });

  const errors = req.validationErrors();

  if (errors) {
    req.flash('errors', errors);
    return res.redirect('/Register');
  }

  const user = new User({
    email: req.body.email,
    password: req.body.password,
    username: req.body.username
  });

  User.findOne({ email: req.body.email }, (err, existingUser) => {
    if (existingUser) {
      req.flash('errors', { msg: 'Account with that email address already exists.' });
      return res.redirect('/Register');
    }
    user.save((err) => {
      if (err) { return next(err); }
      req.logIn(user, (err) => {
        if (err) {
          return next(err);
        }
        res.redirect('/');
      });
    });
  });
};

这是我的模型脚本User.js

const mongoose = require('mongoose');

  const userSchema = new mongoose.Schema({
  email: { type: String, unique: true },
  password: String,
  username: String
  });

  const User = mongoose.model('User', userSchema);

  module.exports = User;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您没有设置/Register路线。您目前只有3条路线,都使用相同的路径(/)。我的猜测是其中两个是拼写错误(第一个是真正的/路由处理程序,因为它正在提供index.html)。