Как добавить контекст в хук Sequelize?

Я хочу использовать ловушку для контроля доступа к строке, чтобы пользователи могли получать доступ только к своим строкам. Хук добавит дополнительное условие where, чтобы гарантировать, что пользователь является владельцем строки (например: WHERE ownerId=user.id).

Проблема в том, как передать идентификатор пользователя в Sequelize, чтобы он был у хука, когда он срабатывает? Я просмотрел документацию, и для меня не очевидно, возможно ли это.

Спасибо

ссылка: http://sequelize.readthedocs.org/en/latest/docs/hooks/

1 ответ

Решение

Чтобы добавить контекст, вы можете включить все, что вам нравится в объекте параметров. Например, скажем, вы используете Model.findAll(), Вы должны настроить свои параметры так:

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

options.context = 'foo';

Затем в хуке вы сможете получить доступ к options.context и использовать его по своему усмотрению. Конечно, вам, вероятно, не следует использовать "зарезервированные" слова, используемые Sequelize для фильтрации запросов.

Другие вопросы по тегам