Mongoose 用户、角色和权限
Posted
技术标签:
【中文标题】Mongoose 用户、角色和权限【英文标题】:Mongoose User, Roles & Permissions 【发布时间】:2020-10-20 12:46:17 【问题描述】:我对 NoSQL/Mongo/Mongoose 还是很陌生,我正在尝试确定设置模式的最佳方式。这是我所拥有的:
const UserSchema = new mongoose.Schema(
email:
type: String,
required: true
,
password:
type: String,
required: true,
minlength: 6,
select: false,
,
roles: [
type: mongoose.Schema.ObjectId,
ref: 'Role',
,
],
);
const RoleSchema = new mongoose.Schema(
name:
type: String,
required: true,
unique: true,
,
description:
type: String,
,
permissions: [
type: mongoose.Schema.ObjectId,
ref: 'Permission',
,
],
);
const PermissionSchema = new mongoose.Schema(
name:
type: String,
required: true,
unique: true,
,
description:
type: String,
,
);
很简单,用户有角色,角色有权限。
如果我想查找用户及其权限,是否应该通过 populate 以某种方式完成,即使权限实际上并不是用户架构的直接一部分,或者这应该/可以是虚拟?
基本上,我想要做的是访问用户的权限,如下所示:
const user = User.findById(id);
console.log(user.permissions);
【问题讨论】:
【参考方案1】:如果您想在一个查询中检索用户的权限,您可以使用nested population。
代码如下:
User.findById(id)
.populate(
path: 'roles',
populate: [
path: 'permissions',
model: 'Permission'
]
).exec();
如果您想了解更多关于猫鼬种群的信息,请参阅this
【讨论】:
感谢您的回答,我可以确认此方法确实填充了权限。以上是关于Mongoose 用户、角色和权限的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 MVC nodejs 服务上的角色(jsonwebtoken,mongoose)
使用 JWT (Node.js + mongoose) 在 REST API 中管理用户权限的最佳方法