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