# #javascript #typescript #firebase #google-cloud-firestore
Вопрос:
При вызове data()
метода внутри функции Firestore 9 onSnapshot
он возвращает объект, содержащий все поля в документе.
Но в моем коде ниже есть ошибка машинописного текста, в ...doc.data()
которой говорится: Spread types may only be created from object types. ts(2698)
Итак, если data()
возвращает объект, почему TypeScript жалуется, что это не объект?
const unsubscribe = onSnapshot( collectionOrdered, (snapshot) =gt; { snapshot.docs.forEach((doc) =gt; { documents.push({ ...doc.data(), id: doc.id }); }); error.value = null; console.log(documents); }, (err) =gt; { console.log(err.message); documents.splice(0); error.value = err.message; } );
Ответ №1:
У меня возникли проблемы с его поиском, но, похоже doc
, внутри snapshot
нужно было напечатать как doc: DocumentData
.
Полный пример кода:
const unsubscribe = onSnapshot( collectionOrdered, (snapshot) =gt; { snapshot.docs.forEach((doc: DocumentData) =gt; { documents.push({ ...doc.data(), id: doc.id }); }); error.value = null; console.log(documents); }, (err) =gt; { console.log(err.message); documents.splice(0); //Clears reactive array error.value = err.message; } );