javascript - 使用单个 JSON Web 令牌在 MongoDB 中创建多个文档
问题描述
编辑:我意识到将这些组件作为子文档添加给我的用户也是可能的。但是,我不确定这是否是最佳做法?大家会推荐什么?
我目前正在构建一个使用 Express、Node 和 MongoDB 来允许用户登录的应用程序。我希望能够调整代码,以便当有人创建帐户时,它会创建两个文档:用户文档,以及与该用户关联的“跟踪器”文档。
我当前的代码使用 JSON Web Tokens。保存用户文档后,我希望能够创建一个具有相同“令牌”数组的“跟踪器”文档,以便我可以轻松地将对该跟踪器文档中的 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);
});
});
以及创建 Web 令牌的函数:
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;
});
};
理想情况下,我也希望能够将令牌变量添加到“跟踪器”文档中。问题是,我的“跟踪器”文档尚未创建。
我可以告诉应用程序在创建用户之前创建跟踪器文档,然后将生成的令牌附加到它吗?我该怎么做?我在代码中的注释概述了我的想法。
还是有更好的策略?我不反对将用户及其跟踪数据保存在同一个文档中(可能是跟踪数据的子文档、设置的子文档等),但我不确定这将如何工作。请让我知道你的想法!我的服务器的完整代码在我的 Github 上:https ://github.com/KingOfCramers/boilerplate_jwt_node_api/tree/master/server
解决方案
推荐阅读
- r - 将总计行和/或列附加到 R 中的 data.frame
- python - 嗨,我的程序中有一个错误,我不知道,但是当我输入任何内容时它一直告诉我输入无效
- xpath - 如何加入 xpath 的结果?
- excel - Webscrape VBA - 列表
- mongodb - 使用 dot-env 作为我的 MongoDB 用户名/密码
- airflow - 用于实验 API 的气流 RBAC
- macos - WildFly 20.0.0.Final - 无法从“logging.properties”读取日志配置(java.net.UnknownHostException:usr)
- r - 将两个数值变量与缺失值合并的最佳方法是什么?
- mongodb - 更新 mongo 文档以将 int 转换为十进制类型
- mysql - 错误代码:1292。截断不正确的 DOUBLE 值:“xxx”