我需要在mongoose中实现基于执行请求的用户的id的pre钩子。
我不能访问初始函数上下文(userId、权限等)并在mongoose pre钩子中使用它。
let writePermissionCondition = async function(next) {
let ctx = getCurrentContext();
next();
}
因为我不能在mongoose模型中发送当前上下文,所以我不能访问执行实际请求的userId。
编辑:关于架构的更多信息以及我试图实现的目标
1)用户向服务发出请求(监听事件。例如: user/create、user/delete、user/find等)
2)事件调用CRUD函数
3) CRUD中使用的模型有ReadPermission和WritePermission中间件(钩子)。
4) ReadPermission和WritePermission验证发出请求的用户是否具有读或写权限。这是我需要知道哪个用户试图访问该模型的步骤。
我可能错了,权限应该在控制器中实现,而不是在模型中。
发布于 2019-03-25 15:04:47
将其设置为global var,并在mongoose操作中使用它
let writePermissionCondition = async function(next) {
let ctx = getCurrentContext();
global.ctx = ctx
next();
}
现在,您可以在应用程序中的任何位置访问global.ctx
。
https://stackoverflow.com/questions/55332573
复制相似问题