Может агрегировать 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
};