如何在Sequelize钩子中添加上下文?

时间:2015-02-11 08:42:46

标签: sequelize.js

我想使用钩子对一行执行访问控制,以便用户只能访问他们拥有的行。钩子会添加一个额外的where子句,以确保用户是该行的所有者(例如:WHERE ownerId = user.id)。

问题是,我如何将用户ID传递给Sequelize,以便在钩子触发时钩子有它?我查看了文档,如果可能的话,这对我来说并不明显。

由于

参考:http://sequelize.readthedocs.org/en/latest/docs/hooks/

1 个答案:

答案 0 :(得分:3)

要添加上下文,您可以在选项对象中包含您喜欢的任何内容。例如,假设您正在使用Model.findAll()。您可以设置如下选项:

options = {
  attributes: ['id', 'column1', 'column2'],
  where: { someColumn: 'aValue' }
}

options.context = 'foo';

然后在钩子中你可以访问options.context并随意使用它。当然你可能不应该使用任何"保留" Sequelize用来过滤查询的单词。