Getstream.io:通过 socket/faye 删除的活动的消息格式

Getstream.io: Message format for deleted activities via socket/faye

我正在通过 getstream.io 实现类似 Facebook 反应的功能。 发布和删除活动 ("reactions") 工作正常。

基础知识:

在删除和新建中各有一个反应的示例:

{
  "deleted": [
    "d5b1aee0-5a1a-11e6-8080-80015eb61bf9",
    "49864f80-5a19-11e6-8080-80015eb61bf9",
    "47fe7700-5a19-11e6-8080-80015eb61bf9",
    "4759ab80-5a19-11e6-8080-80015eb61bf9",
    "437ce680-5a19-11e6-8080-80015eb61bf9"
  ],
  "new": [
    {
      "actor": "user:55d4ab8a11234359b18f06f6:Manuel Reil",
      "verb": "support",
      "object": "control:56bf2fb884e5c0756e910755",
      "target": null,
      "time": "2016-08-04T11:48:23.168000",
      "foreign_id": "55d4ab8a11234359b18f06f6:support:56bf2fb884e5c0756e910755",
      "id": "58d9c000-5a39-11e6-8080-80007c3c41d8",
      "to": [],
      "origin": "control:56bf2fb884e5c0756e910755"
    }
  ],
  "published_at": "2016-08-04T11:48:23.546708+00:00"
}

我面临的挑战:

可能的方法:

非常感谢。

通过 foreign_id 删除活动将删除提要中存在给定 foreign_id 的所有活动。这是使用 foreign_id 字段的主要优点之一,它允许对一组活动进行级联删除。 (例如,Post 和点赞是一个典型的用例,您想要删除一个 Post 以及与之相关的所有点赞)。

使用 foreign_id 的另一个优点是您不必跟踪 Stream 生成的 ID。

您应该能够通过为 foreign_id 字段选择一个唯一的值(例如,数据库中的对象 ID)来解决您的第一个问题,这样您仍然可以轻松删除并避免级联删除行为。

关于你的第二个问题,如果你正在根据实时更新更新你的 UI 这也意味着你已经从同一个提要中阅读,并且你有活动列表及其 ID和 foreign_ids。从 activity_id 中选择活动应该只是创建某种内存映射的问题(例如,将 data-activity_id 属性添加到 DOM)。