getstram.io 更新 activity 没有将它移到 Feed 上

getstram.io update activity does not move it up the feed

假设我有一个使用 GetStream.io 提要的音乐应用程序(如示例),其中我有用户提要和乐队提要(用户能够关注其他用户或乐队)。 我正在使用 stram-ruby gem.

现在,假设我post作为乐队订阅的用户,正在做类似的事情:

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)

这很好用,检索波段提要,我可以看到 post:

@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)

获取带提要将正确显示新评论 ('comment 2'),但我的问题是:

  1. 我正在使用 post 的 created_at 字段(以确保我能够更新它,因为 GetStream 文档说这是唯一键的一部分)
  2. 我在更新时使用相同的created_at时间
  3. 在获取乐队提要时,我希望这个 activity 是最上面的一个 - 因为提要应该按时间顺序排序。但根据 created_at 时间,它仍然保持在原来的位置。

怎么办?

我可以尝试使用 post 的 updated_at 字段,但是如果出于任何原因我的数据库中的 post 在我没有更新 GetStream 提要的情况下发生变化,我将无法再在 GetStream 中更新它。

我错过了什么吗?

您可以通过两种方式实现这一目标。

1.) 您可以使用聚合提要。它们根据聚合项的最后更新进行排序。 (假设这当然适合您的用例)

2.) 您可以将一个名为 updated_at 的字段发送到 Stream。接下来启用排名提要并简单地告诉 Stream 按 updated_at 排序而不是常规的时间顺序排序。

一般来说,创建排名方法可以让您完全控制 Feed 的排名。 (虽然只有付费计划) https://getstream.io/docs/#custom_ranking