Идея проста. Пользователь добавляет новый документ в коллекцию, а затем хочет, чтобы он отображался на странице без обновления. Я знаю, что могу синхронизировать все документы с onSnapshot
, но это очень важно, прямо сейчас я просто хочу получить вставленный документ ID
.
addWish = function() {
let wish = document.getElementById("wish-text").value;
if (wish && this.checkSignedIn()) {
this.database.collection("wishes").add({
wish: wish,
author: this.user.name,
date: 0 - Date.now(),
voteup: 1,
votedown: 0
}).then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
this.database.collection('wishes').doc(docRef.id).get().then(function (documentSnapshots) {
this.renderWishes(documentSnapshots, 1);
}.bind(this)).catch(function(error) {
console.error("Error getting document: ", error);
});
}.bind(this)).catch(function(error) {
console.error("Error adding document: ", error);
});
Функция renderWishes
не работает на одной из первых строк. И тогда все остальное тоже не работает, например foreach
:
renderWishes = function(querySnapshot, type) {
console.log(querySnapshot.docs[0].data());
querySnapshot.forEach(function(doc) {
let id = doc.id;
doc = doc.data(); //and after I simply display data with templates ${doc.author}
Ошибка при получении документа: TypeError: невозможно прочитать свойство «0» неопределенного
А также
foreach`: "firebase.js:131 Ошибка при получении документа: TypeError: querySnapshot.forEach не является функцией
Есть ли шанс исправить это? Или нельзя получить документ по ID из Firestore?
console.log(documentSnapshots);
выглядит пугающе и содержит много всего внутри, в то время как я не могу получить то, что мне нужно, напримерdocumentSnapshots.wish
илиdocumentSnapshots.doc.wish
. Кроме того, текст в вашем ответе немного странный, поэтому я мог пропустить фактическое решение... 17.01.2018onSnapshot
или функции HTTP? Или обновить. 17.01.2018