РЕДАКТИРОВАТЬ: Я понимаю, что добавление этих компонентов в качестве дополнительного документа для моего пользователя также возможно. Тем не менее, я не уверен, что это лучшая практика? Что бы вы все порекомендовали?
В настоящее время я создаю приложение, которое использует Express, Node и MongoDB, чтобы позволить пользователям войти в систему. Я хотел бы иметь возможность адаптировать код таким образом, чтобы при создании учетной записи он создавал два документа: пользовательский документ и документ «трекера», связанный с этим пользователем.
Мой текущий код использует веб-токены JSON. Когда пользовательский документ сохранен, я хотел бы иметь возможность создать документ «трекера» с тем же массивом «токенов», чтобы я мог легко ограничить доступ к данным обработки маршрута Express в этом документе трекера для соответствующего пользователя. Вот маршрут и код, который запускается при создании экземпляра пользователя, который предоставляет токен JSON:
app.post("/users", (req,res) => {
var body = _.pick(req.body, ['email', 'password']);
var user = new User(body);
/// Maybe do tracker.save() here?
user.save().then(() => {
return user.generateAuthToken();
}).then((token) => {
res.header("x-auth", token).send(user);
}).catch((e) => {
res.status(400).send(e);
});
});
И функция, которая создает веб-токен:
UserSchema.methods.generateAuthToken = function () {
var user = this;
var access = 'auth';
var token = jwt.sign({_id: user._id.toHexString(), access}, process.env.JWT_SECRET).toString();
user.tokens = user.tokens.concat([{access, token}]);
// And then add it to the tracker as well?
return user.save().then(() => {
return token;
});
};
В идеале я хотел бы иметь возможность добавить переменную token в документ "tracker". Проблема в том, что мой «трекерный» документ еще не создан.
Могу ли я попросить приложение создать документ трекера перед созданием пользователя, а затем добавить к нему сгенерированный токен? Как бы я это сделал? Мои комментарии в коде обрисовывают в общих чертах то, о чем я думал.
Или есть лучшая стратегия? Я не против того, чтобы хранить пользователей и их данные отслеживания в одном документе (возможно, вложенные документы для данных отслеживания, вложенные документы для настроек и т. Д.), Но я не уверен, как это будет работать. Пожалуйста, поделись своими мыслями! Полный код моего сервера находится на моем Github здесь: https://github.com/KingOfCramers/boilerplate_jwt_node_api/tree/master/server