getstream 聚合可以处理 "object" 属性 的属性吗

can getstream aggregation work on properties of the "object" property

我设置聚合规则:

{{ 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,

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

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

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

var activity = {
  time: new Date(),
  verb: 'created',
  actor: 1,
  object: '1',
  experienceId: 12
};