GetStream 在不同的提要中创建相同的 activity

GetStream creates same activity in different feeds

我构建这段代码是为了将标签添加到我的 标签提要

buildActivity = (model,obj) => {
  return {
    ...{
      actor: `user:model.user`,
      verb: 'is',
      object: `model:${model.id}`,
      foreign_id: `model:${model.id}`,
      time: model.createdAt.toDate(),
    },
    ...(obj ? obj : {})
  }
}
addActivitiesToTagFeed = async (model,tags) => {
  const promises = []
  for(let i=0;i<tags.length;i++){
    const tag = tags[i]
    const activity = buildActivity(model,{target: `tag:${tag}`})
    const feed = stream.feed('tag', tag)
    promises.push(feed.addActivity(activity))
  }
  await Promise.all(promises)
}

我限制最多 3 个标签。我可以喜欢 tag:netflix tag:films tag:suspense

问题是 addActivity 创建的 activity 对所有标签都是一样的。相同的目标,甚至相同的 activity id。它打破了我的 'tag_aggregated',它只跟在其中一个标签之后。

有人知道如何解决吗?

好消息

Feed(在我的例子中是 tag feed)不能有具有相同 foreign_id + 时间 的不同活动。为了修复我更改了我的代码

buildActivity = (model,obj) => {
  return {
    ...{
      actor: `user:model.user`,
      verb: 'is',
      object: `model:${model.id}`,
      foreign_id: `model:${model.id}`,
      time: model.createdAt.toDate(),
    },
    ...(obj ? obj : {})
  }
}
addActivitiesToTagFeed = async (model,tags) => {
  const promises = []
  for(let i=0;i<tags.length;i++){
    const tag = tags[i]

    // THIS LINE changing the foreign_id for each activity
    const activity = buildActivity(model,{target: `tag:${tag}`,foreign_id: `model:${model.id}:${tag}`})

    const feed = stream.feed('tag', tag)
    promises.push(feed.addActivity(activity))
  }
  await Promise.all(promises)
}

它解决了我的问题。在 GetStream 文档中没有提到它但是有道理,因为 foreign_id + time 是查找唯一记录的辅助键。