1

我设置了聚合规则:

{{ object.experienceId }}

在 getstream.io 中的通知提要上,期望它基于 object.experienceId 进行聚合,但它似乎将所有内容聚合为一个,而不管 object.experienceId 是什么。我是否误解了聚合的工作原理?可能是什么问题?

    var activity = {
        time: new Date(),
        verb: 'created',
        actor: { id: 1, name: 'User One' },
        object: {
            id: 2,
            experienceId: 12,
            caption: 'Moment 1',
            photo:
            { id: '314e00a2-2455-11e5-b696-feff819cdc9f',
                mainColor: 'ff3333',
                width: 1000,
                height: 400 },
            createdBy: {
                id: 1, name: 'User One'
            },
            type: 'Moment' },
        context: 'http://derbyapp.co'
    };


    notifications.addActivity(activity,
4

1 回答 1

2

这不起作用的原因是因为对象字段应该是一个字符串(http://getstream.io/docs/#add-remove-activities),因此在聚合规则中你不能引用活动对象的属性场地。这个问题有多种解决方案。

首先,您可以将 experienceId 作为活动对象的单独属性提供,因此您可以使用聚合模板{{ experienceId }},因为提供给活动的所有附加属性都可以在聚合规则中使用(http://getstream.io/docs/ #aggregated-feeds)。

其次,您可以在活动的任何其他字段上提供对象,例如 item。其他字段可以引用它们的子属性,因此您可以使用聚合规则{{ item.experienceId }}。但是请注意不要将数据发送到 getstream.io API,而这在 getstream.io 端实际上不需要,在此示例中,您还可以发送对象的 id 字段,而不是整个对象,然后从本地数据库中检索对象一次您从 API 中检索活动(actor 字段也是如此)。如果您不想处理为此所需的逻辑,您可以使用 getstream 的集成库之一(有用于 rails/django/laravel 等的库)。

var activity = {
  time: new Date(),
  verb: 'created',
  actor: 1,
  object: '1',
  experienceId: 12
};
于 2015-12-07T13:12:58.257 回答