Обновление запроса 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) зависит от выбранного года. У меня был такой же вопрос, и я ответил на него здесь.