Обновление запроса firestore с помощью rxfire и динамическое сохранение значения в svelte

Я пытаюсь динамически изменить запрос на firestore на основе значения из svelte store.

В настоящее время представление обновлено значением из selectedYear store, но если значение обновляется, оно не распространяется в новом запросе.

Что мне нужно изменить, чтобы query / books обновлять всякий раз, когда year обновления?

Это код, который я использую сейчас:

<script>
  import { getContext } from "svelte";
  import BookView from "./BookView.svelte";
  import { db } from "./firebase";
  import { collectionData } from "rxfire/firestore";
  import { startWith } from "rxjs/operators";
  import { selectedYear } from "./store.js";

  let year = 2030;

  const unSub = selectedYear.subscribe(value => {
    console.log(value);
    year = value;
  });

  let startDate = new Date(year, 0, 1);
  let endDate = new Date(year + 1, 0, 1);

  // Query requires an index, see screenshot below
  const query = db
    .collection("books")
    .where("updateDate", ">=", startDate)
    .where("updateDate", "<", endDate)
    .orderBy("updateDate", "desc");

  let books = collectionData(query, "title").pipe(startWith([]));
</script>

<style>
  input {
    display: block;
  }
</style>

{#each $books as book}
  <BookView {book} />
{/each}

1 ответ

Решение

Ваш запрос не реагирует.

Вы можете использовать производный магазин. Где результат (запрос rxFire) зависит от выбранного года. У меня был такой же вопрос, и я ответил на него здесь.

Другие вопросы по тегам