2016-08-20 2 views
1

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

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

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. Я использую created_at поле моего поста (чтобы гарантировать свою способность обновлять его как GetStream документы скажем, это часть уникального ключа)
  2. Я использую то же время created_at в обновлении
  3. При получении ленты ленты я ожидал бы, что эта деятельность будет верхней - так как фид должен быть отсортирован в хронологическом порядке. Но он остается там, где он был раньше, на основе созданного_а времени.

Что делать?

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

Я ничего не пропустил?

ответ

2

Существует 2 способа достижения этого.

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

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

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

+0

Благодарим за быстрое отклик! –

Смежные вопросы