我想使用钩子对一行执行访问控制,以便用户只能访问他们拥有的行。该钩子将添加一个额外的 where 子句以确保用户是该行的所有者(例如:WHERE ownerId=user.id)。
问题是,如何将用户 id 传递给 Sequelize,以便在钩子触发时钩子拥有它?我已经查看了文档,如果可能的话,这对我来说并不明显。
谢谢
要添加上下文,您可以在选项对象中包含您喜欢的任何内容。例如,假设您正在使用Model.findAll(). 您可以像这样设置您的选项:
options = {
attributes: ['id', 'column1', 'column2'],
where: { someColumn: 'aValue' }
}
options.context = 'foo';
Run Code Online (Sandbox Code Playgroud)
然后在钩子中,您将能够访问 options.context 并随心所欲地使用它。当然,您可能不应该使用 Sequelize 使用的任何“保留”词来过滤查询。