Как правило, вы можете определить, что будет отправлено одним из двух способов:
A) Если вы хотите отправить объект только определенным подписчикам - вы используете темы в качестве промежуточного шага.Функция config
в вашем поле определяет, какую тему слушает подписчик, и когда вы публикуете, вы решаете, какие темы публиковать (либо вызывая Absinthe.Subscription.publish один раз для каждой соответствующей темы, либо через функцию trigger
в вашей декларации поля подписки).Публикация без тем - это вариант, конечно же!
B) Если у вас есть только одна тема для всех подписчиков, но вы хотите решить, отправлять объект или нет, основываясь на его содержимом, вы сами решаете, стоит лидля вызова Absinthe.Subscription.publish
на основе объекта или, если вы используете trigger
, ваша функция решит, следует ли возвращать имя темы или пустой список []
Когда ваш распознаватель работает,Абсент уже решил, что отправляет подписчику результат подписки.Вы не можете остановить это, посылая что-то, вы просто можете выбрать что.Я думаю, если бы вы действительно хотели что-то сделать в своем преобразователе, вы могли бы вернуть {:ok, nil}
, чтобы ваши подписчики получили значение null
и могли справиться с этим, но это довольно странно.
Так как в комментариях к вопросу, который вы говорите, вы не можете создать тему для каждого возможного значения, я думаю, вы можете выбрать путь B.
(Да, я публикую здесь свой ответ из канала абсента)! Надеюсь, вы увидите это и найдете это полезным!)