首页 > 解决方案 > 将“updateActivities”与 Stream 一起使用时如何指定提要?

问题描述

Stream API 中的updateActivities方法令人困惑,因为文档似乎表明在此操作期间未指定提要。这应该如何工作?

其他活动方法 ( addActivity, removeActivity) 在提要对象上执行,这是有道理的。但是文档显示updateActivities为客户端对象上的一种方法,无法指定包含活动的提要。

从文档:

var now = new Date();

activity = {
    "actor": "1",
    "verb":"like",
    "object": "3",
    "time": now.toISOString(),
    "foreign_id": "like:3",
    "popularity": 100
};

// first time the activity is added
user1.addActivity(activity);

// update the popularity value for the activity
activity.popularity = 10;

// send the update to the APIs
client.updateActivities([activity]);

我的期望(据我所知,唯一有意义的事情)是该updateActivities方法将位于提要对象上,因为 aforeign_id在所有提要中并不是唯一的。(之前的假设基于在多个提要中使用相同的外国 ID 的大量经验。)

标签: getstream-io

解决方案


将活动添加到提要时,Stream 会为其生成一个唯一 ID,并使用该 ID 将活动传播到直接提要,如果有的话,传播到所有追随者提要。事实上,只有对活动的引用存储在提要中。

Stream 还保证 ID 对于相同timeforeign_id值是一致的。这意味着如果您添加一个具有相同时间和foreign_id 的活动,它将始终以相同的ID 结束。

这使您可以控制活动的唯一性并更新所有出现的活动,而无需跟踪可以具有副本的所有提要(to目标和关注关系将使这成为一项非常复杂的任务!)。


推荐阅读