Может агрегировать gettream работать со свойствами свойства "object"

Я установил правило агрегации:

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

1 ответ

Решение

Причина, по которой это не работает, заключается в том, что поле объекта, как ожидается, будет строкой ( http://getstream.io/docs/), поэтому в рамках правила агрегации нельзя ссылаться на свойства объекта действий. поле. Есть несколько решений этой проблемы.

Во-первых, вы могли бы указать ExperienceId как отдельное свойство объекта действия, чтобы вы могли использовать шаблон агрегации. {{ experienceId }}, поскольку все дополнительные свойства, предоставленные действию, могут использоваться в правиле агрегации ( http://getstream.io/docs/).

Во-вторых, вы можете указать объект в любом дополнительном поле действия, например, элемент. Дополнительные поля могут ссылаться на их дочерние свойства, поэтому вы можете использовать правило агрегации {{ item.experienceId }}, Но будьте осторожны, чтобы не отправлять данные в API getstream.io, которые на самом деле не нужны в конце getstream.io, в этом примере вы также можете отправить поле id объекта вместо всего объекта и один раз получить объект из локальной базы данных. вы извлекаете действия из API (то же самое относится и к полю актера). Если вы не хотите позаботиться о логике, необходимой для этого, вы можете использовать одну из библиотек интеграции getstream (есть библиотеки для rails/django/laravel и т. Д.).

var activity = {
  time: new Date(),
  verb: 'created',
  actor: 1,
  object: '1',
  experienceId: 12
};
Другие вопросы по тегам