getstream-io - обобщение действий на основе правил агрегации - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть две плоские ленты для каждого пользователя.

Фид timeline предназначен для общедоступного пользовательского контента (называемого постами), который отображается на временной шкале профиля.Фид log предназначен для действий пользователя, которые не обязательно должны отображаться на временной шкале, но могут быть объединены в ленте новостей (например, «Пользователь 1 и 10 других прокомментировали этот пост»)

Яв настоящее время строит функцию новостной ленты.Для этого я создал агрегированный фид news для каждого пользователя.Каждый раз, когда кто-то следует за пользователем, его news фид следует за timeline и log.

другого человека. Вот пример сценария:

  1. Пользователь 2 следует за пользователем 1.user_2.news_feed.follow ('timeline', 1) И user_2.news_feed.follow ('log', 1)
  2. Пользователь 2 следует за пользователем 3. user_2.news_feed.follow ('timeline', 3) ANDuser_2.news_feed.follow ('log', 3)
  3. Пользователь 1 разместил на своей временной шкале user_1.timeline_feed.add_activity ({actor: 'user: 1', глагол: 'post', object: 'post: 1 ', target:' user: 1 '})
  4. Пользователь 3 понравился Пост пользователя 1 user_3.log_feed.add_activity ({субъект:' user: 3 ', глагол:' like ', объект:' like: 1 ', target:' post: 1 '})

В этом примере, поскольку news: 2 следует за временной шкалой: 1 и log: 3, два разных действия, относящиеся к одному и тому же сообщению, будутбыть перенаправленным на новости: 2.

{actor: 'user: 1', глагол: 'post', объект: 'post: 1', target: 'user: 1', post: 1} {actor: 'user: 3', глагол: 'like', объект: 'like: 1', target: 'post: 1', post: 1}

Как вы предлагаете, это лучший способ написать мое правило агрегирования.

Я думаю, что мне нужно агрегировать по пользовательскому атрибуту post, который я добавил.Таким образом, сообщение будет появляться только один раз в ленте новостей.

Однако я хочу создать сводный текст, похожий на Facebook: «Пользователь 1 и 10 других прокомментировали это сообщение».

Есть ли способ сделать это с помощью правил агрегирования?

...