Вот как я пишу документ и его подколлекции:
public async setEvent(event: EventInterface): Promise<void[]> {
return new Promise<void[]>(async (resolve, reject) => {
const writePromises: Promise<void>[] = [];
event.setID(event.getID() || this.afs.createId());
event.getActivities()
.forEach((activity) => {
activity.setID(activity.getID() || this.afs.createId());
writePromises.push(this.afs.collection('events').doc(event.getID()).collection('activities').doc(activity.getID()).set(activity.toJSON()));
activity.getAllStreams().forEach((stream) => {
this.logger.info(`Steam ${stream.type} has size of GZIP ${getSize(this.getBlobFromStreamData(stream.data))}`);
writePromises.push(this.afs
.collection('events')
.doc(event.getID())
.collection('activities')
.doc(activity.getID())
.collection('streams')
.doc(stream.type) // @todo check this how it behaves
.set({
type: stream.type,
data: this.getBlobFromStreamData(stream.data),
}))
});
});
try {
await Promise.all(writePromises);
await this.afs.collection('events').doc(event.getID()).set(event.toJSON());
resolve()
} catch (e) {
Raven.captureException(e);
// Try to delete the parent entity and all subdata
await this.deleteEvent(event.getID());
reject('Something went wrong')
}
})
}
Однако, когда я смотрю на вкладку сети:
Я вижу, что один запрос запускается, пока все хорошо, req_0
данные мои activity
, но, глядя на этот же запрос, я вижу:
Таким образом, он добавляет больше данных, и этого не должно произойти, потому что: a) я передаю размер запроса в хранилище (1mb) b) из-за медленного соединения я пропускаю ограничение по времени для записи.
Самое интересное, что такое происходит, когда у меня медленная сеть.
РЕДАКТИРОВАТЬ: Вот полезная нагрузка примера запроса:
Кто-нибудь, объясните, почему это?