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 событие, которое, если настроено, клиент будет прослушивать, таким образом удаляя запись из списка.

Спасибо за прочтение.

Если вы заметили что-то неправильное или что-то можно улучшить, прокомментируйте ниже. Я ценю все конструктивные отзывы.