Я использую Firestore с React и Typescript. Я пытаюсь получить некоторые данные из firestore и обновить их. Я видел много примеров в Интернете, использующих синтаксис с методами, но моя IDE показывает, что эти типы не имеют этих методов.
Я могу получить данные из Firestore, используя такие функции:
import { getFirestore, collection, doc, updateDoc } from 'firebase/firestore';
const firestore = getFirestore(config);
function App() {
const collRef = collection(firestore, 'collection');
const docRef = doc(firestore, 'collection/id');
updateDoc(docRef, { test: 1234 }).then(x => console.log(x));
}
Но я видел много примеров, в которых методы цепочек подобны этому:
firebase.firestore().collection('collection').doc('id').set({ test: 1234 });
Моя IDE указывает, что ни один из типов в этой цепочке не имеет ни одного из этих методов.
Даже официальная документация указывает, что ссылочные типы должны иметь методы .get()
, .set()
и .update()
, но их нет.
Это должно быть просто, но мне не хватает чего-то очень простого. Что я делаю не так?
Метод цепочки, на который вы ссылаетесь, - это старый синтаксис пространства имен. Новый модульный SDK (v9.0.0+
) использует функциональный синтаксис, как и в вашем первом фрагменте кода.
Вы по-прежнему можете использовать старый синтаксис, используя совместимую версию, изменив импорт на:
import firebase from "firebase/compat/app"
import "firebase/compat/auth"
// import "firebase/compat/[SERVICE]"
Однако рекомендуется обновить код до нового синтаксиса, чтобы воспользоваться преимуществами встряхивания дерева. Проверьте документация для получения дополнительной информации.