В типах Firestore CollectionReference и DocumentReference отсутствуют методы .add(), .set(), .update() и т. д.

Я использую 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(), но их нет.

Это должно быть просто, но мне не хватает чего-то очень простого. Что я делаю не так?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод цепочки, на который вы ссылаетесь, - это старый синтаксис пространства имен. Новый модульный SDK (v9.0.0+) использует функциональный синтаксис, как и в вашем первом фрагменте кода.

Вы по-прежнему можете использовать старый синтаксис, используя совместимую версию, изменив импорт на:

import firebase from "firebase/compat/app"
import "firebase/compat/auth"
// import "firebase/compat/[SERVICE]"

Однако рекомендуется обновить код до нового синтаксиса, чтобы воспользоваться преимуществами встряхивания дерева. Проверьте документация для получения дополнительной информации.

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