Это связано с тем, что метод set()
возвращает Promise<void>
, а не Promise<DocumentSnapshot<T>>
.
Вам нужно будет снова прочитать документ, следующим образом:
const updateItemFromCollection = async (collectionName, uid, data) => {
const docRef = database.collection(collectionName).doc(uid);
return docRef.set(data, { merge: true })
.then(() => {
return docRef.get();
.then(doc => {
if (!doc.exists) {
console.log("No such document!"); //Error
} else {
return doc.data();
}
})
.catch(error => {
console.log(error);
});
};
Так работает Firestore, и AFAIK, он основан на том факте, что вы уже знаете значение полей документа, так как вы передали соответствующий объект set()
. Однако можно заметить, что это не так для значений, рассчитанных на бэкэнде на основе значений дозорного, см. FieldValue .