Как указать канал при использовании «updateActivities» с Stream? - PullRequest
0 голосов
/ 11 февраля 2019

Метод updateActivities в Stream API вызывает недоумение, поскольку документы, похоже, указывают, что во время этой операции канал не указан.Как это должно работать?

Другие методы действий (addActivity, removeActivity) выполняются для объекта канала, что имеет смысл.Но документы показывают updateActivities как метод на объекте клиента, без возможности указать фид, содержащий действие.

Из документов:

var now = new Date();

activity = {
    "actor": "1",
    "verb":"like",
    "object": "3",
    "time": now.toISOString(),
    "foreign_id": "like:3",
    "popularity": 100
};

// first time the activity is added
user1.addActivity(activity);

// update the popularity value for the activity
activity.popularity = 10;

// send the update to the APIs
client.updateActivities([activity]);

Мои ожидания (иНасколько я могу судить, имеет смысл только то, что метод updateActivities будет использоваться для объекта канала, поскольку foreign_id не является уникальным для всех каналов.(Предыдущее предположение, основанное на большом опыте использования идентичных внешних идентификаторов в нескольких каналах.)

1 Ответ

0 голосов
/ 12 февраля 2019

Когда действие добавляется в канал, Stream генерирует для него уникальный идентификатор и использует этот идентификатор для распространения действия на прямой канал и, если он есть, на все последующие каналы.На самом деле внутри каналов хранятся только ссылки на действия.

Stream также гарантирует, что идентификаторы соответствуют одинаковым значениям time и foreign_id.Это означает, что если вы добавляете действие с тем же временем и foreign_id, оно всегда будет иметь одинаковый идентификатор.

Это позволяет вам контролировать уникальность действия и обновлять все вхождения действия, не отслеживая всеканалы, которые могут иметь копию (отношения to target и follow сделали бы это очень сложной задачей!).

...