AngularFireList с фильтром ссылок удаляет все элементы вместо отфильтрованных

# #angular #firebase #firebase-realtime-database #angularfire2

Вопрос:

Допустим, у меня есть коллекция Evaluation объектов, определенных следующим образом :

 {
    "category": "category A",
    "question": {
        "text": "Question 1?"
    }
}
 

Эти объекты хранятся в AngularFireList базе данных в реальном времени Firebase по следующему пути interview-question/carrer :

введите описание изображения здесь

Теперь… предположим, мне нужно удалить все вопросы в одной категории, я ожидаю, что следующий код сделает то, что мне нужно :

 this.db
  .list<Evaluation>(
    `interview-questions/${this.type}`, 
    ref => ref.orderByChild('category').equalTo(currentCategory))
  .remove();
 

Но эта строка кода удаляет все вопросы по всем категориям, а не только по currentCategory тем, которые требуются для фильтра. Я смог подтвердить, что запрос, который я использую в list<>() методе, работает, так как этот код отображает все вопросы для этой категории, а не для других :

 this.db
  .list<Evaluation>(
    `interview-questions/${this.type}`, 
    ref => ref.orderByChild('category').equalTo(currentCategory))
  .valueChanges()
  .subscribe(evaluations => console.log(evaluations));
 

Смотрите результат в моей консоли при попытке удалить все вопросы в разделе Category A :

введите описание изображения здесь

Есть ли способ удалить элементы из an AngularFireList , предоставив фильтр, как это сделал я, чтобы мне не приходилось вызывать remove() каждый объект?

*** ПРАВКА 1 ***

Оказывается, этот код ведет себя точно так же. Он также удаляет все записи без учета фильтра :

 removeCategoryQuestions(currentCategory: string) {
  this.db
    .list<Evaluation>(
      `interview-questions/${this.type}`)
    .query
    .orderByChild('category')
    .equalTo(currentCategory)
    .ref
    .remove();
}
 

*** EDIT 2 ***

Before someone posts this solution as an answer, I also tried this piece of code :

 removeCategoryQuestions(currentCategory: string) {
  const categoryEvaluations = (this.categoriesEvaluations[currentCategory] ?? []) as Evaluation[];
  categoryEvaluations
    .map(evaluation => evaluation.key)
    .filter(evaluationKey => evaluationKey != null)
    .forEach(evaluationKey => this.evaluationsRef.remove(evaluationKey));
}
 

The problem with this solution is that my subscription is called once for each question deleted which is not acceptable.