узел js Не могу установить заголовки после их отправки - PullRequest
0 голосов
/ 16 ноября 2018

Я новичок в 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));
    }))

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...