Активность обновления getstram.io не перемещает его вверх по каналу

ruby getstream-io

104 просмотра

1 ответ

Предполагая, что у меня есть музыкальное приложение (как в примере), использующее каналы GetStream.io, где у меня есть пользовательские каналы и каналы (пользователь может следить за другими пользователями или группами). Я использую драгоценный камень Stram-Ruby.

Теперь, скажем, я публикуюсь как участник группы, делая что-то вроде:

user_feed = @client.feed('user', user_id)
activity_data = {
    :actor => "User:#{user_id}",
    :verb => 'post',
    :object => "Post:#{post.id}",
    :target => "Band:#{band_id}",
    :foreign_id => "Post:#{post.id}",
    :time => post.created_at.as_json,
    :comment => 'comment 1',
    :to => ["band:#{band_id}"]
}
user_feed.add_activity(activity_data)

Это отлично работает, и, получая ленту новостей, я вижу этот пост:

@client.feed('band', band_id).get()

Теперь я пытаюсь обновить эту запись (используя поле комментария, чтобы увидеть, что что-то меняется):

activity_data = {
    :actor => "User:#{user_id}",
    :verb => 'post',
    :object => "Post:#{post.id}",
    :target => "Band:#{band_id}",
    :foreign_id => "Post:#{post.id}",
    :time => post.created_at.as_json,
    :comment => 'comment 2',
    :to => ["band:#{band_id}"]
}
@client.update_activity(activity_data)

получение ленты каналов правильно покажет новый комментарий ('комментарий 2'), но моя проблема заключается в следующем:

  1. Я использую поле create_at своего поста (чтобы убедиться, что я могу его обновить, поскольку в документах GetStream говорится, что это часть уникального ключа)
  2. Я использую то же время made_at при обновлении
  3. При выборе ленты новостей я бы ожидал, что эта активность будет самой высокой, так как лента должна быть отсортирована в хронологическом порядке. Но это остается, где это было прежде, основываясь на времени create_at.

Что делать?

Я могу попытаться использовать поле updated_at поста, но затем, если по какой-либо причине пост в моей БД изменится без моего обновления фида GetStream, я больше не смогу обновить его в GetStream.

Я что-то пропустил?

Автор: Israel Roth Источник Размещён: 08.11.2019 11:19

Ответы (1)


2 плюса

Решение

Есть 2 способа, которыми вы можете достичь этого.

1.) Вы можете использовать агрегированные каналы. Они отсортированы по последнему обновлению агрегированного элемента. (конечно, если это соответствует вашему варианту использования)

2.) Вы можете отправить в Stream поле с именем updated_at. Затем вы включаете ранжированные каналы и просто указываете Stream сортировать по updated_at вместо обычной хронологической сортировки.

В общем, создание метода ранжирования дает вам полный контроль над ранжированием вашего фида. (только платные планы) https://getstream.io/docs/#custom_ranking

Автор: Thierry Размещён: 20.08.2016 04:10
Вопросы из категории :
32x32