#sails.js
#sails.js
Вопрос:
Какой цели req.options
служит в SailsJS?
Из источника кажется, что я могу каким-то образом использовать политики для изменения существующих параметров в чертежах Sails и т. Д. Как это работает? Я вообще не могу найти никакой документации.
Ответ №1:
req.options
был введен в Sails v0.10 как способ добавления опций к пользовательским маршрутам. Например, вы всегда можете сделать:
'GET /userList': {
controller: 'UserController',
action: 'find'
}
чтобы указать на действие «найти» по умолчанию для пользовательской модели, но не было способа управлять запросом — он всегда просто возвращал все записи. Теперь вы можете сделать:
'GET /userList': {
controller: 'UserController',
action: 'find',
sort: 'name desc',
where: {name: {startsWith: 'j'}}
}
и будут добавлены все параметры (включая controller
и action
) req.options
, которые действия схемы элементов по умолчанию используют для изменения запроса. Обратите внимание на разницу с Sails v0.9.x, которая использовалась req.target
для отслеживания контроллера и действий.
Как вы указали, req.options
также могут быть изменены в рамках политик, в отличие req.params
от тех, которые сбрасываются перед каждым действием политики и контроллера. Это можно использовать, например, для дальнейшего ограничения критериев для запроса на основе роли пользователя.
Очевидно, что документы для версии 0.10.x не полностью завершены (и всегда будут улучшаться), но это определенно может найти место в разделе синтаксиса целевого маршрута…
Комментарии:
1. Вау! Это мощно. Любой доступный обзор относительно того, какие свойства (
sort
,where
, и т.д.) используются различными схемами элементов Rest?2. если вы посмотрите на sails / lib / blueprints / actionUtils. js вы можете видеть, где и как он его использует. Я играл с этим и пока кажется немного ограниченным. Но я использую req.options. где ограничить поиск в действиях find и findOne. Это требует небольшого переписывания ваших чертежей.
3. Что вы подразумеваете под »
req.params
сбросом перед каждой политикой». Я пытаюсь добавить владельца по умолчанию в политику, поэтому в политике я делаю,req.body.owner = me
. Кажется, это работает, разве это не правильный способ сделать это?4. Я имею в виду, что настройка
req.params.foo = 123
в одной политике не будет иметь никакого эффекта в другой. То же самое не относится кreq.body
, и при условии, что вы убедитесь, что не переопределяете существующий ключ, это прекрасный вариант, ноreq.options
он был создан для того, чтобы вы могли оставить исходные параметры запроса в покое, если хотите.5. Мне действительно любопытно, где устанавливается req.options и каковы все его возможности. Я не могу найти его ни в коде, ни в документах…