Мы используем Angular с Node.js Express. Мы пытаемся обновить данные пользователя со страницы настроек, но при нажатии кнопки обновления выдается:
Не удалось загрузить ресурс: net :: ERR_CONNECTION_RESET
Кажется, не может отправить обновление через наблюдаемый. Когда я проверяю этот URL в узле:
http://localhost:3000/api/chatapp/user/edit-user В браузере написано {"message": "Нет авторизации"} . Вот код.
Угловая
EditUser(body): Observable<any> {
return this.http.post(`${BASEURL}/user/edit-user`, body);
}
TS
private populateForm() {
const unusedFields = [
'_id',
...
...
];
const userInfo = Object.assign({}, this.user);
unusedFields.forEach((field) => delete userInfo[field]);
this.SettingsForm.setValue(userInfo);
}
private buildSettingsForm() {
this.SettingsForm = this.fb.group({
email: [null, [Validators.required, Validators.email], this.forbiddenEmails],
firstName: [null, [Validators.required, Validators.pattern('[a-zA-Z ]*')]],
jobTitle: [null, [Validators.required]],
lastName: [null, [Validators.required, Validators.pattern('[a-zA-Z ]*')]],
username: [null, [Validators.required, Validators.pattern('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])')]]
});
this.SettingsForm.setValidators(this.minimumAge(18));
}
UpdateUser() {
this.usersService.EditUser(this.SettingsForm.value).subscribe(
data => {
console.log(data);
this.router.navigate(['main']);
},
err => console.log(err)
);
}
Также Node.js :
async EditUser(req, res,next) {
User.findById(req.user.id, function (err, user) {
if (!User) {
return res
.status(httpStatus.INTERNAL_SERVER_ERROR)
.json({ message: 'User is not found' });
}
const schema = Joi.object().keys({
username: Joi.string()
.min(4)
.max(10)
.required(),
email: Joi.string()
.email()
.required(),
firstName: Joi.string().required(),
lastName: Joi.string().required(),
jobTitle: Joi.string().required(),
});
const { error, value } = Joi.validate(req.body, schema);
if (error && error.details) {
return res.status(HttpStatus.BAD_REQUEST).json({ msg: error.details })
}
const email = Helpers.lowerCase(req.body.email);
const username = Helpers.lowerCase(req.body.username);
const firstName = req.body.firstName;
const lastName = req.body.lastName;
const jobTitle = req.body.jobTitle;
User.email = email;
User.firstName = firstName;
User.lastName = lastName;
User.username = username;
User.jobTitle = jobTitle;
User.update()
});
}
}
Маршрутизатор
router.post('/user/edit-user', AuthHelper.VerifyToken, UserCtrl.EditUser);
MongoDb
const userSchema = mongoose.Schema({
username: { type: String },
email: { type: String },
isVerified: { type: Boolean, default: false },
password: { type: String },
passwordResetToken: String,
passwordResetExpires: Date,
firstName: { type: String },
lastName: { type: String },
jobTitle: { type: String },
...
...
module.exports = mongoose.model('User', userSchema);
Я думаю, что-то не так в контроллере Node.js и в функции Angular. Что случилось? Как мы можем исправить эту ошибку?