Как работает щипковый крючок в feathersjs

В документах по перьям приведено следующее объяснение:

pluck отбрасывает все поля, кроме указанных, либо из представленных данных, либо из результата. Если данные являются массивом или результатом поиска с разбивкой по страницам, ловушка удалит поля для каждого элемента.

import _pluck from '../common/_pluck'; 
import checkContextIf from './check-context-if'; 
import getItems from './get-items'; 
import replaceItems from './replace-items'; 

export default function (...fieldNames) { 
  return context => { 
    checkContextIf(context, 'before', ['create', 'update', 'patch'], 'pluck'); 
    if(context.params.provider) { 
      replaceItems(context, _pluck(getItems(context), fieldNames)); 
    } 

    return context; 
  }; 
} 

Утилита getItems возвращает элементы либо в hook.data, либо в hook.result в зависимости от того, используется ли ловушка как ловушка до или после. hook.result.data или hook.result возвращаются для метода поиска.

Возвращаемые элементы всегда являются массивом для упрощения дальнейшей обработки.

Утилита replaceItems является противоположностью getItems, возвращая элементы, откуда они пришли.

Мой вопрос касается функции checkContextIf. Эта функция предотвращает вызов ловушки, кроме как перед созданием, обновлением и исправлением методов. Как тогда работает отрывной хук на результатах запроса. Разве результаты не создаются после вызова службы и обрабатываются после завершения?

1 ответ

Решение

Как указано в документации:

Утилита getItems возвращает элементы либо в hook.data, либо в hook.result в зависимости от того, используется ли ловушка как ловушка до или после.

hook.data это данные (тело), ​​отправленные с запросом на создание, исправление или обновление, чтобы их можно было использовать для пропуска полей, которые вы не хотите сохранять в базе данных. Это также задокументировано в API ловушек:

  • data - данные запроса (для create, update а также patch)
Другие вопросы по тегам