【问题标题】:can getstream aggregation work on properties of the "object" property可以对“对象”属性的属性进行 getstream 聚合工作
【发布时间】:2015-11-29 15:59:26
【问题描述】:

我设置了聚合规则:

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

【问题讨论】:

    标签: activity-streams getstream-io


    【解决方案1】:

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

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

    其次,您可以在活动的任何其他字段上提供对象,例如项目。其他字段可以引用它们的子属性,因此您可以使用聚合规则{{ 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-23
      • 1970-01-01
      • 2011-10-04
      • 2016-02-08
      • 2011-02-17
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 2012-04-26
      相关资源
      最近更新 更多