getstream-io - 将“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 的大量经验。)
解决方案
将活动添加到提要时,Stream 会为其生成一个唯一 ID,并使用该 ID 将活动传播到直接提要,如果有的话,传播到所有追随者提要。事实上,只有对活动的引用存储在提要中。
Stream 还保证 ID 对于相同time
的foreign_id
值是一致的。这意味着如果您添加一个具有相同时间和foreign_id 的活动,它将始终以相同的ID 结束。
这使您可以控制活动的唯一性并更新所有出现的活动,而无需跟踪可以具有副本的所有提要(to
目标和关注关系将使这成为一项非常复杂的任务!)。