1

集計ルールを設定しました。

{{ object.experienceId }}

getstream.io の通知フィードでは、object.experienceId に基づいて集約されることを期待していますが、object.experienceId に関係なく、すべてを 1 つに集約しているようです。集計の仕組みを誤解していますか? 問題は何ですか?

    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/ #集約フィード)。

次に、アイテムなど、アクティビティの追加フィールドにオブジェクトを指定できます。追加のフィールドはその子プロパティを参照できるため、集計ルールを使用できます{{ item.experienceId }}。ただし、getstream.io の最後で実際には必要のないデータを getstream.io API に送信しないように注意してください。この例では、オブジェクト全体ではなくオブジェクトの id フィールドを送信し、ローカル データベースからオブジェクトを一度取得することもできます。 API からアクティビティを取得します (actor フィールドについても同じことが言えます)。これに必要なロジックを処理したくない場合は、getstream の統合ライブラリの 1 つを使用できます (rails/django/laravel などのライブラリがあります)。

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