Я новичок в nodejs. Я пытаюсь создать безопасный маршрут, используя jwt и passport, все работает нормально, но когда я пытаюсь проверить некоторую информацию в базе данных, используя mongoose и возвращая результат, я получаю эту ошибку "Не удается установитьзаголовки после их отправки "
вот код, который генерирует ошибку (res.status (404) .json (ошибки))
router.get(
'/',
passport.authenticate('jwt', { session: false }),
(req, res) => {
const errors = {};
Profile.findOne({ user: req.user.id })
.then(profile => {
if (!profile) {
errors.noprofile = 'There is no profile for this user';
return res.status(404).json(errors);
}
res.json(profile);
})
.catch(err => console.log(err));
}
);
это модель профиля shcema
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ProfileSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'user'
},
handel: {
type: String,
require: true,
max: 40
},
company: {
type: String,
},
webSite: {
type: String,
},
location: {
type: String,
},
});
module.exports = Profile = mongoose.model('profile', ProfileSchema);
это мой сервер
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const passport = require('passport');
const profile = require('./routes/api/profile');
const app = express();
// passport
app.use(passport.initialize());
// passport config
require('./config/passport')(passport);
// body Parser middleware
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
//DB config and connection
const db=require('./config/keys').mongoURI;
mongoose.connect(db, { useNewUrlParser: true })
.then(() => console.log("connected"))
.catch(err => console.log(err))
app.use('/api/profile',profile);
const port=process.env.PORT ||5000
app.listen(port,() => console.log('works'))
это мой паспортный конфиг
const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const mongoose = require('mongoose');
const User = mongoose.model('user');
const keys = require('./keys');
const opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = keys.secretKey;
module.exports = passport => {
passport.use(
new JwtStrategy(opts, (jwt_payload, done) => {
User.findById(jwt_payload.id)
.then(user => {
if(user){
done(null, user);
}
done(null, false);
}).catch(err => console.log(err));
}))
}