FeathersJS позволяет легко писать веб-API в реальном времени. Я хочу поговорить о том, как вы можете передавать данные из ваших хуков. У меня было приложение, в котором было две службы groups
и group-access
, пользователь мог извлекать элементы из groups
только в том случае, если у них была запись в коллекции group-access
.
Но это означало, что когда пользователю был предоставлен доступ через службу group-access
, ему пришлось бы перезагрузить страницу, чтобы повторно получить groups
, чтобы отразить новый доступ.
Приведенный выше фрагмент предназначен для ловушки после создания, это будет для службы group-access
. Когда создается новая group-access
запись, этот хук будет запущен и загрузит группу через get
, так что мы можем испустить эту запись. Затем мы emit
в службе groups
и используем имя события created
. Мы клонируем context
и добавляем некоторые дополнительные параметры, чтобы мы могли использовать их в функции публикации groups
.
Обязательно обновите
path
, чтобы он генерировал с использованием этого пути / имени службы.
В приведенном выше фрагменте публикации мы собираемся публиковать данные в реальном времени только в том случае, если мы пришли из внутреннего emit
, мы можем проверить это, проверив свойство, которое мы добавили в контекст в вызове emit
. В реальном приложении вы, вероятно, будете излучать на основе других проверок.
При этом все каналы будут отфильтрованы только до канала context.userId
, который был передан пользовательским emit
. Это будет send
, что data
на канал.
Если вы используете что-то вроде can-connect-feathers
или feathers-vuex
, когда происходит событие created
в реальном времени, созданный элемент будет добавлен в список groups
и должен отображаться автоматически.
То же самое должно быть сделано для события removed
, поэтому при удалении записи groups-access
аннулируется доступ пользователя. Мы можем emit
removed
событие, которое, если настроено, клиент будет прослушивать, таким образом удаляя запись из списка.
Спасибо за прочтение.
Если вы заметили что-то неправильное или что-то можно улучшить, прокомментируйте ниже. Я ценю все конструктивные отзывы.