Closed Kudratov closed 5 years ago
In my create ejs, there are 14 inputs that are required in jQuery(main.js) and I think the main problem is in the backend logic. In the create.ejs, there is form the method is post and the action is "/credit" user.js
var mongoose = require("mongoose"); var passportLocalMongoose = require("passport-local-mongoose"); var UserSchema = new mongoose.Schema({ username: { type: String, required: true }, password: { type: String }, fName: { type: String }, mName: { type: String }, lName: { type: String }, strPass: { type: String }, intPass: { type: String }, regPlace: { type: String }, citPlace: { type: String }, fullAdr: { type: String }, innCode: { type: String }, salry: { type: String }, workPlc: { type: String }, phoneNum: { type: String }, userCreditType: { type: String }, userCred: { type: String }, creditReason: { type: String }, }); UserSchema.plugin(passportLocalMongoose); module.exports = mongoose.model("User", UserSchema);
app.js
var express = require("express"), app = express(), bodyParser = require("body-parser"), expressSanitizer = require("express-sanitizer"), mongoose = require("mongoose"), passport = require("passport"), LocalStrategy = require("passport-local"), methodOverride = require("method-override"); var creditRoute = require("./routes/credit"), User = require("./models/user"); mongoose.connect("mongodb://localhost/Bmodel_v7"); // "mongodb://***:***@ds261929.mlab.com:61929/bmodel" || app.use(bodyParser.urlencoded({extended: true})); app.set("view engine", "ejs"); app.use(express.static(__dirname + "/public")); app.use(methodOverride("_method")); app.use(expressSanitizer()); app.use(require("express-session")({ secret: "I don't like Banks", 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()); app.use(creditRoute); app.listen((process.env.PORT || 3000), process.env.IP, function(){ console.log("Server has started!!!"); });
credit.js
var express = require("express"), router = express.Router(), passport = require("passport"), Credit = require("../models/credDb"), User = require("../models/user"); router.get("/", function(req, res){ res.redirect("/credit"); }); router.get("/credit", function(req, res){ res.render("create"); }); router.post("/credit", function(req, res){ var password = req.body.user.strPass + req.body.user.intPass; var username = req.body.user.innCode; console.log(username); var newUser = new User({username: username}); User.register(newUser, password, function(err, user){ if(err){ console.log(err + "====here======="); return res.render("create"); } passport.authenticate("local")(req, res, function(){ var newValue = req.body.user; console.log("==11=="); res.redirect("/credit/" + user.id); var new_User = new User(); }); }); }); router.get("/credit/:id", function(req, res){ res.send("Target"); }); module.exports = router;
You need to find out which line contains the error using DEBUG.
In my create ejs, there are 14 inputs that are required in jQuery(main.js) and I think the main problem is in the backend logic. In the create.ejs, there is form the method is post and the action is "/credit" user.js
app.js
credit.js