Я пытаюсь создать форму «Редактировать профиль» во внешнем интерфейсе, используя E js. но ничего не работает
Это код контроллера
exports.getUserInfo = (req, res, next) => {
const currentUser = req.user;
User
.find()
.then(user =>{
console.log(user._id);
res.render('account/informations',{
user,
currentUser
});
}).catch(err =>{
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});
};
exports.getEditUser = (req, res, next) => {
const editMode = req.query.edit;
if (!editMode) {
return res.redirect('/');
}
const userId = req.params.userId;
User.findById(userId)
.then(user => {
if (!user) {
return res.redirect('/');
}
res.render('account/edit-info', {
pageTitle: 'Edit Account',
editing: editMode,
user
});
})
.catch(err => {
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});
};
exports.postEditUser = (req, res, next) => {
const userId = req.body.userId;
const updatePhoneNumber = req.body.phoneNumber;
const updateCity = req.body.city;
const updateState = req.body.state;
const updateBloodType = req.body.bloodType;
User.findById(userId)
.then(user => {
if (user.userId.toString() !== req.user._id.toString()) {
return res.redirect('/');
}
user.phoneNumber = updatePhoneNumber;
user.bloodType = updateBloodType;
user.city = updateCity;
user.state = updateState;
return user.save()
.then(result => {
console.log(result);
console.log(`User Info edited. User Name: ${user.firstName + user.lastName}`);
res.redirect('/display-info');
})
.catch(err => {
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});
})
.catch(err => {
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});
};
Код маршрута
router.get('/display-info',isAuth,adminController.getUserInfo);
router.get('/edit-info/:userId',isAuth,adminController.getEditUser);
router.post('/edit-info',isAuth,adminController.postEditUser);
И этот код моего интерфейса тоже
<%- include('../includes/top.ejs') %>
</head>
<body>
<%- include('../includes/navigation.ejs') %>
<main class="myContainer">
<p>First Name</p>
<div><%= user.firstName %></div>
<p>Last Name</p>
<div><%= user.firstName %></div>
<p>E-mail</p>
<div><%= user.email %></div>
<% if (isAuthenticated && user._id.toString() === currentUser._id.toString()) { %>
<div class="myItem">
<a href="/edit-info/<%= user._id %>?edit=true" class="btn">Edit</a>
</div>
<div class="myItem">
<input type="hidden" name="_csrf" value="<%= csrfToken %>" />
<% } %>
</div>
</li>
</main>
<%- include('../includes/bottom.ejs') %>
интерфейс Редактировать код
<%- include('../includes/top.ejs') %>
</head>
<body>
<%- include('../includes/navigation.ejs') %>
<main class="myContainer center">
<form action="/edit-info" method="POST">
<label for="firstName">Fist Name</label>
<div><%= user.firstName%></div>
<label for="firstName">Last Name</label>
<div><%= user.lastName%></div>
<label for="firstName">E-mail</label>
<div><%= user.email %></div>
<label for="phoneNumber">Phone Number</label>
<input type="text" name="phoneNumber" id="phoneNumber" value="<% if (editing) { %><%= user.phoneNumber %><% } %>">
<label for="state">State</label>
<input type="text" name="state" id="state" value="<% if (editing) { %><%= user.state %><% } %>">
<label for="city">City</label>
<input type="text" name="city" id="city" value="<% if (editing) { %><%= user.city %><% } %>">
<label for="bloodType">Blood Type</label>
<input type="text" name="bloodType" id="bloodType" value="<% if (editing) { %><%= user.bloodType %><% } %>">
<% if (editing) { %>
<input type="hidden" value="<%= user._id %>" name="userId">
<% } %>
<input type="hidden" name="_csrf" value="<%= csrfToken %>" />
<button class="myButton" type="submit">Submit</button>
</form>
</main>
<%- include('../includes/bottom.ejs') %>
код модели
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
firstName:{
type:String,
required:true,
},
role:{
type:String,
require:true,
default:'user'
},
lastName:{
type:String,
required:true,
},
code:{
type:String,
required:true,
},
state:{
type:String,
required:true,
},
city:{
type:String,
required:true,
},
phoneNumber:{
type:Number,
required:true,
},
bloodType:{
type:String,
},
resetToken: String,
resetTokenExpiration: Date
});
module.exports = mongoose.model('User', userSchema);
Есть ли решение этой проблемы? Есть ли проект, который содержит эту точку? Я хочу прочитать код этого проекта