Создание нескольких документов в MongoDB с помощью одного веб-токена JSON - PullRequest
0 голосов
/ 02 июля 2018

РЕДАКТИРОВАТЬ: Я понимаю, что добавление этих компонентов в качестве дополнительного документа для моего пользователя также возможно. Тем не менее, я не уверен, что это лучшая практика? Что бы вы все порекомендовали?

В настоящее время я создаю приложение, которое использует 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

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