【发布时间】:2015-02-13 04:27:53
【问题描述】:
我想使用挂钩对行执行访问控制,以便用户只能访问他们拥有的行。该钩子会添加一个额外的 where 子句以确保用户是该行的所有者(例如:WHERE ownerId=user.id)。
问题是,我如何将用户 ID 传递给 Sequelize,以便在钩子触发时钩子拥有它?我已经查看了文档,如果这可能的话,对我来说并不明显。
谢谢
【问题讨论】:
标签: sequelize.js
我想使用挂钩对行执行访问控制,以便用户只能访问他们拥有的行。该钩子会添加一个额外的 where 子句以确保用户是该行的所有者(例如:WHERE ownerId=user.id)。
问题是,我如何将用户 ID 传递给 Sequelize,以便在钩子触发时钩子拥有它?我已经查看了文档,如果这可能的话,对我来说并不明显。
谢谢
【问题讨论】:
标签: sequelize.js
要添加上下文,您可以在选项对象中包含您喜欢的任何内容。例如,假设您正在使用Model.findAll()。您可以像这样设置您的选项:
options = {
attributes: ['id', 'column1', 'column2'],
where: { someColumn: 'aValue' }
}
options.context = 'foo';
然后在钩子中,您将能够访问 options.context 并随心所欲地使用它。当然,您可能不应该使用 Sequelize 使用的任何“保留”词来过滤查询。
【讨论】:
context 在 Sequelize 文档中似乎不受支持:docs.sequelizejs.com/class/lib/… 它也不在 Sequelize 打字稿定义中,这意味着使用此选项将不允许您的代码编译:@ 987654322@关于如何完成这项工作还有其他建议吗?