Поле не добавлено монго - PullRequest
       71

Поле не добавлено монго

0 голосов
/ 12 февраля 2020

Сегодня я столкнулся с такой проблемой - поле не добавлено. У меня есть схема токена ниже

const {Schema, model, Types} = require('mongoose');

const schema = new Schema({
    userId: {
        type: Types.ObjectId,
        ref: 'User'
    },
    token: {
        type: String,
        required: true,
    }
})

module.exports = model('Token', schema);

Модель, к которой относится userId

const {Schema, model} = require('mongoose');

const schema = new Schema({
    name: {
        type: String,
        required: true,
        min: 6,
        max: 255,
        unique: true
    },
    email: {
        type: String,
        required: true,
        max: 255,
        unique: true
    },
    password: {
        type: String,
        required: true,
        max: 1024,
        min: 6
    },
    date: {
        type: Date,
        default: Date.now
    }
})

module.exports = model('User', schema);

У меня есть маршрут к '/ refre sh' ниже для обновления моего токена

router.post('/refresh', async (req, res) => {
    const { refreshToken } = req.body;
    const dbToken = await Token.find({ token: refreshToken });

    console.log(dbToken);

    if (!dbToken) {
        return res.status(404).json('This token doesn\'t exist');
    }

    await Token.deleteOne({ token: refreshToken });

    const response = await issueTokenPair(dbToken.userId);
    res.json(response);
});

И чтобы получить пару токенов, у меня есть функция issueTokenPair

async function issueTokenPair(userId) {
    const newRefreshToken = uuid();
    const token = new Token({ userId: Types.ObjectId(userId), token: newRefreshToken });
    await token.save();
    return {
        token: jwt.sign({ id: userId }, process.env.TOKEN_SECRET, {
            expiresIn: '15min'
        }),
        refreshToken: newRefreshToken
    };
}

Но когда я передаю данные в '/ refre sh', например:

{
    "refreshToken": "64615bf7-3af3-45d0-a31a-d8b672389428"
}

MongoDB создает такое поле в коллекции:

{
     _id: 5e441b705d78ae26389fd0d5,
     token: '64615bf7-3af3-45d0-a31a-d8b672389428',
     __v: 0
}

Как видите, здесь нет идентификатора пользователя. В чем проблема и как я могу это исправить?

...