форма не отправляется полностью в mongodb, и перенаправление занимает вечность с использованием nodejs и express - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь отправить основную c форму. Но когда я нажимаю кнопку «Зарегистрироваться» в веб-форме, я получаю только _id, дату и __v в моем mongodb, но остальная информация не отправляется. Однако, когда я использую почтальона, все работает нормально.

Когда я также пытаюсь использовать res.status (301) .redirect ('mypage'), он загружается навсегда, не отправляя никаких данных.

Я уже давно этим занимаюсь. Мы будем очень благодарны за любую помощь / направление. Спасибо.

User. js

  var mongoose = require("mongoose");
  var Schema = mongoose.Schema; 

  var UserSchema = new Schema({
   firstName: { type: String },
   lastName: { type: String },
   email: { type: String },
   phone: { type: String },
   pass: { type: String },
   date: { type: Date, default: Date.now },
 });
 module.exports = User = mongoose.model("Loggers", UserSchema);

handleUsers. js

  var express = require("express"),
  cors = require("cors"),
  bodyParser = require("body-parser"),
  bcrypt = require("bcrypt"),
  jwt = require("jsonwebtoken"),
  myUser = require("../models/User");

  var routes = express.Router();

  routes.use(cors());
  process.env.SECRETE_KEY = "secrete";
  routes.use(express.static("public"));
  routes.use(bodyParser.urlencoded({ extended: true }));

     //getting home page
  routes.get("/", function (req, res) {
    res.render("home");
  });

     //getting register
  routes.get("/signup", function (req, res) {
   res.render("signup");
  });

     //posting data to mongodb
  routes.post("/signup", function (req, res) {
  var positiveMessage = "User added successfully!";
  var negativeMessage =
     "User already exists: please login or use a different email";

  var today = new Date();
  var userData = {
    firstName: req.body.firstName,
    lastName: req.body.lastName,
    email: req.body.email,
    phone: req.body.phone,
    pass: req.body.pass,
    created: today,
  };

  myUser
  .findOne({ _id: req.params._id, email: req.body.email })
  .then((user) => {
   if (!user) {
    bcrypt.hash(req.body.pass, 10, function (err, hash) {
      (userData.pass = hash),
        myUser
          .create(userData)
          .then((user) => {
            console.log(user);//displaying info on the console
            res.status(301).redirect("login", { positiveMessage });
          })
          .catch((err) => {
            res.json({ "Error: ": err });
          });
      });
    } else {
      res.render("signup", { negativeMessage });
    }
  }).catch((err) => {
    res.json({ "Error: ": err });
  });
});

module.exports = routes;

signup.hbs

  <form action="/signup" method="POST" enctype="multipart/form-data">
    <div class="form-col">
        <div class="form-group col-md-4">
            <label for="inputFirstName4">First Name: <b>*</b></label>
            <input class="form-control" type="text" name="firstName" 
               id="inputFirstName4"placeholder="Enter First Name" 
               required />
        </div>

        <div class="form-group col-md-4">
            <label for="inputLastName4">Last Name: <b>*</b></label>
            <input class="form-control" type="text" name="lastName" 
              id="inputLastName4"placeholder="Enter Last Name" 
              required />
        </div>
        <div class="form-group col-md-4">
            <label for="inputEmail4">Email: <b>*</b></label>
            <input type="email" class="form-control" id="inputEmail4" 
             name="mail" placeholder="Email" required>
        </div>

        <div class="form-group col-md-4">
            <label for="inputPhone4">Phone: <b>*</b></label>
            <input class="form-control" id="inputPhone4" type="phone" 
              name="phone" placeholder="Enter Phone"required />
        </div>
        <div class="form-group col-md-4">
            <label for="inputPassword4">Password: <b>*</b></label>
            <input type="password" class="form-control" 
             id="inputPassword4" name="pass" 
              placeholder="Password"  required />
        </div>
    </div>

    <div class="buttons">
        <button type="submit" class="btn btn-primary" 
          id="b1">Register</button>
        <a href="/login" class="btn btn-primary" type="submit" 
          id="b">Login Instead</a>
    </div>
</form>

Пример вывода с помощью веб-формы

  {
    _id: 5f0daccfc1b6414e34b0bcc4,
    date: 2020-07-14T13:02:07.789Z,
    __v: 0
  } 
...