Мне все еще может понадобиться дополнительная информация, тем не менее, позвольте мне попытаться помочь с тем, что у меня есть.
"Я думал, что с помощью API я верну идентификатор пользователя и сохраню его после входа в localstorage. «Это зависит от подхода, который вы используете, скажем, вы используете просто Express, Mon go, в этом случае вы можете сохранить, как вы делаете с req.userId
, вы можете получить доступ к этой информации в любое время, когда пожелаете. Другими подходами могут быть отправка токена из внешнего интерфейса (например, Angular).
«добавить userId при сохранении данных в базе данных». если я правильно понял, да, это правильно. Вы используете req.userId
для хранения этого идентификатора и используете его, чтобы убедиться, что текущий пользователь вошел в систему перед доступом к набору данных .
«Это хорошее решение», если оно работает, да, оно действительно.
«Разве оно решено по-другому?» да, вы можете держать ключ в интерфейсе, скажем, с помощью Angular, и отправлять его всякий раз, когда вам нужен доступ к набору данных.
Помните, что API в NodeJS не имеет состояния: вы не храните информацию от пользователя, просто токен, как кажется, что вы делаете.
Ваш код выглядит нормально, в чем проблема?
У меня есть несколько вопросов:
- "загрузка данные, созданные зарегистрированным пользователем. " Вы можете быть более точным c, какой тип данных?
- в чем проблема? вы получаете ошибки?
Curiosity
Мне не ясно, если вы делаете это, но один хороший способ использовать mon goose - это что-то вроде этого:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const eventSchema = new Schema({
name: String,
description: String,
date: String
});
eventSchema.methods.verifyToken= function (req, res, next) {//now you can call this method externally, like you call an mongoose function such as schema.findone
if ( !req.headers.authorization ) {
return res.status(401).send('Unauthorized request');
}
const token = req.headers.authorization.split(' ')[1];
if ( token === 'null' ) {
return res.status(401).send('Unauthorized request');
}
const payload = jwt.verify(token, 'secretKey');
// verify decode jwt token if is valid
if ( !payload ) {
return res.status(401).send('Unauthorized request');
}
req.userId = payload.subject;
next();
}
module.exports = mongoose.model('event', eventSchema, 'events');