#javascript #html #firebase #google-cloud-firestore
#javascript #HTML #firebase #google-облако-firestore
Вопрос:
Я создаю систему друзей / подписчиков с помощью HTML и Firebase. Я создал страницу для добавления новых друзей. Когда я нажимаю кнопку «Добавить друга» (рисунок ниже), я хочу, чтобы серверная часть нашла документ в профиле в li, но я не знаю, как найти точный документ. Ниже вы также можете увидеть мою структуру Firestore.
Javascript:
firebase.auth().onAuthStateChanged(function(user) {
db.collection('users').get().then(function(snapshot) {
console.log(snapshot.docs)
setupFindFriends(snapshot.docs)
})
const findfriends = document.querySelector('.findfriends');
const setupFindFriends = (data) => {
let html = '';
data.forEach(doc => {
const friend = doc.data();
const li = `
<li>
<div class="name">${friend.Fullname}</div>
<img class="friendpfp" src="${friend.pfpURL}">
<button class="addfriend">Add friend</button>
</li>
`;
html = li
})
findfriends.innerHTML = html;
};
});
Ответ №1:
Вы должны передать идентификатор документа addFriend()
функции. Что-то вроде следующих строк (непроверенных):
firebase.auth().onAuthStateChanged(function(user) {
db.collection('users').get().then(function(snapshot) {
console.log(snapshot.docs)
setupFindFriends(snapshot.docs)
})
const findfriends = document.querySelector('.findfriends');
const setupFindFriends = (data) => {
let html = '';
data.forEach(doc => {
const friend = doc.data();
const li = `
<li>
<div class="name">${friend.Fullname}</div>
<img class="friendpfp" src="${friend.pfpURL}">
<button class="addfriend" onclick="addFriend('${friendId}')">Add friend</button>
</li>
`;
html = li
})
findfriends.innerHTML = html;
};
});
function addFriend(friendId) {
console.log(friendId);
// Do something with friendId, e.g. create or update a Firestore doc, etc ...
}
Комментарии:
1. Я попробовал ваш ответ сейчас, и я получаю сообщение об ошибке в консоли: ` Uncaught ReferenceError: HNJr68ZYXJXbA7v9n2jSHscXwSp1 не определен ` HNJr68ZYXJXbA7v9n2jSHscXwSp1 — идентификатор друга
2. Если я определил функцию после findfriends.innerHTML = html; Я получаю «addFriend не определен». Если бы я определил функцию в <script></script> tag in HTML I get the error above. Никаких изменений после вашего обновления
3. Хорошо! Я думаю, что теперь это сработало. Функция должна была быть определена в HTML, а не в JavaScript-файле. Спасибо!
4. Смотрите обновление. Поместите
addFriend()
функцию за пределы прослушивателя аутентификации.