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'),但我的问题是:
- 我正在使用 post 的 created_at 字段(以确保我能够更新它,因为 GetStream 文档说这是唯一键的一部分)
- 我在更新时使用相同的created_at时间
- 在获取乐队提要时,我希望这个 activity 是最上面的一个 - 因为提要应该按时间顺序排序。但根据 created_at 时间,它仍然保持在原来的位置。
怎么办?
我可以尝试使用 post 的 updated_at 字段,但是如果出于任何原因我的数据库中的 post 在我没有更新 GetStream 提要的情况下发生变化,我将无法再在 GetStream 中更新它。
我错过了什么吗?
您可以通过两种方式实现这一目标。
1.) 您可以使用聚合提要。它们根据聚合项的最后更新进行排序。 (假设这当然适合您的用例)
2.) 您可以将一个名为 updated_at 的字段发送到 Stream。接下来启用排名提要并简单地告诉 Stream 按 updated_at 排序而不是常规的时间顺序排序。
一般来说,创建排名方法可以让您完全控制 Feed 的排名。 (虽然只有付费计划)
https://getstream.io/docs/#custom_ranking
假设我有一个使用 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'),但我的问题是:
- 我正在使用 post 的 created_at 字段(以确保我能够更新它,因为 GetStream 文档说这是唯一键的一部分)
- 我在更新时使用相同的created_at时间
- 在获取乐队提要时,我希望这个 activity 是最上面的一个 - 因为提要应该按时间顺序排序。但根据 created_at 时间,它仍然保持在原来的位置。
怎么办?
我可以尝试使用 post 的 updated_at 字段,但是如果出于任何原因我的数据库中的 post 在我没有更新 GetStream 提要的情况下发生变化,我将无法再在 GetStream 中更新它。
我错过了什么吗?
您可以通过两种方式实现这一目标。
1.) 您可以使用聚合提要。它们根据聚合项的最后更新进行排序。 (假设这当然适合您的用例)
2.) 您可以将一个名为 updated_at 的字段发送到 Stream。接下来启用排名提要并简单地告诉 Stream 按 updated_at 排序而不是常规的时间顺序排序。
一般来说,创建排名方法可以让您完全控制 Feed 的排名。 (虽然只有付费计划) https://getstream.io/docs/#custom_ranking