Вот код
const {validationResult} = require('express-validator');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const User = require('../models/user');
exports.login = (req, res, next) => {
const email = req.body.email;
const password = req.body.password;
let loadedUser;
User.findOne({email:email})
.then(user => {
if(user){
loadedUser = user;
return bcrypt.compare(password, user.password);
} else{
const error = new Error('EMAILID_NOT_FOUND');
error.statusCode = 401;
throw error;
}
})
.then(
isEqual => {
console.log(isEqual);
if(!isEqual){
const error = new Error('WRONG_PASSWORD');
console.log(error)
error.statusCode = 401;
throw error;
}
const token = jwt.sign({
email: loadedUser.email,
userId: loadedUser._id.toString()
},'somesecrekey',{expiresIn:'7d'}
);
res.status(200).json({
token: token,
userId: loadedUser._id.toString()
});
})
.catch(err => {
if(!err.statusCode){
err.statusCode =500;
}
next(err);
});
};
app.js
const express = require('express');
const bodyparser = require('body-parser');
const mongoose = require('mongoose');
const path = require('path');
const eventRoutes = require('./routes/eventRouter');
const companyRoutes = require('./routes/companyRouter');
const authrouter = require('./routes/authrouter');
const app = express();
// app.use(bodyparser.urlencoded());
app.use(bodyparser.json()); //application/json
app.use('/images',express.static(path.join(__dirname, 'images')));
app.use((req, res, next)=>{
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH,
DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
})
app.use('/auth', authrouter);
app.use('/event', eventRoutes);
app.use('/company',companyRoutes);
app.use((error, req, res, next)=>{
const status = error.statusCode || 500;
const message = error.message;
const data = error.data;
const errmsg = data[0].msg;
res.status(status).json({ error: message, errmsg: errmsg, data: data });
});
mongoose.connect('mongodb://localhost:27017/scope').then(result=>{
app.listen(8080)
}).catch(err => console.log(err));
Я пытаюсь выполнить аутентификацию в nodejs, и понедельник goose
, когда пользователь нажимает кнопку входа в API, будет вызван с тело сообщения электронной почты и пароль, когда элемент управления переходит к функции входа в систему, он проверяет наличие или отсутствие электронной почты в базе данных, а также проверку правильности пароля или нет
Здесь я получаю сообщение об ошибке как Ошибка типа: невозможно прочитать свойство '0' из неопределенного
с сообщением об ошибке
Error: WRONG_PASSWORD
at User.findOne.then.then.isEqual (F:\Codebase\Ack
Codebase\SCOPE\scope_server\controllers\authcontroller.js:63:31)
App Error: WRONG_PASSWORD
TypeError: Cannot read property '0' of undefined
at app.use (F:\Codebase\Ack Codebase\SCOPE\scope_server\app.js:34:24)
at Layer.handle_error (F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\layer.js:71:5)
at trim_prefix (F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\index.js:315:13)
at F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\index.js:284:7
at Function.process_params (F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\index.js:335:12)
at Immediate.next (F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\index.js:275:10)
at Immediate.<anonymous> (F:\Codebase\Ack
Codebase\SCOPE\scope_server\node_modules\express\lib\router\index.js:635:15)
at runCallback (timers.js:706:11)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)
Пожалуйста, помогите спасибо