Я хотел бы создать набор пакетных действий, используя функции, которые не зависят от одного экземпляра WriteBatch. Прямо сейчас я должен передать экземпляр класса WriteBatch функциям, которые затем могут вызывать функции .set()
или .update()
или .delete()
для пакета.
Возьмите мой пример кода:
export class BatchHelperService {
constructor(private afStore: AngularFirestore) { }
executeBatchActions(batchActions: BaseBatchAction[]): Observable<void> {
const batch = this.afStore.firestore.batch();
batchActions.forEach(action => action.attachActionToBatch(batch));
return from(batch.commit());
}
}
У меня есть функция, которая принимает массив базового класса BaseBatchAction
. У меня есть три производных класса, представляющих три типа пакетных действий (установить, обновить, удалить). Все они реализуют функцию attachActionToBatch()
, но она полагается на передачу уже созданного объекта WriteBatch
.
Я хочу удалить эту зависимость, поскольку она нарушает принцип чистого кода для функций monadi c (избегайте используя выходные аргументы). Возможно ли это с помощью SDK?