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. 我正在使用我的帖子的 created_at 字段(以确保我能够更新它,因为 GetStream 文档说这是唯一键的一部分)
  2. 我在更新时使用相同的 created_at 时间
  3. 在获取乐队提要时,我希望此活动是最重要的活动 - 因为提要应按时间顺序排序。但根据 created_at 时间,它仍然保持在原来的位置。

该怎么办?

我可以尝试使用帖子的 updated_at 字段,但是,如果由于任何原因我的数据库中的帖子发生更改而我没有更新 GetStream 提要,我将无法再在 GetStream 中更新它。

我错过了什么吗?

4

1 回答 1

3

有两种方法可以实现这一目标。

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

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

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

于 2016-08-20T16:10:14.963 回答