#javascript #firebase #firebase-authentication
#javascript #firebase #firebase-аутентификация
Вопрос:
итак, у меня есть функция, которая отправляет сообщение, и она вызывается после onAuthStateChanged(firebase) Я хочу удалить его и добавлять снова всякий раз, когда пользователь входит в систему, но он не удаляется, и я не получаю никаких ошибок
auth.onAuthStateChanged(function (user) {if (user) {
// User is signed in.
// creating posts
posts = db.collection("posts");
const { serverTimestamp } = firebase.firestore.FieldValue;
console.log(serverTimestamp)
const submitPost = async (event) => {
event.preventDefault();
let LastId = posts.doc("id");
let id;
LastId.get().then((doc) => {
id = doc.data().lastPost;
id ;
id = id.toString();
const post = {
uid: user.uid,
content: a.preview.innerHTML,
createdAt: serverTimestamp(),
id: Number(id),
};
console.log(post.uid);
posts.doc(id).set(post).then(closeMD()); // puted this line here instead of outside "then" because i need the id
LastId.update({ lastPost: Number(id) });
});
};
submit.addEventListener("click", submitPost);
submit.removeEventListener("click" , submitPost)}
Редактировать
Я обнаружил, что onAuthStateChanged
это an observer
, и я действительно не понимал, как с ним работать, я прочитал документацию и посмотрел видео от firebase, но я все еще не понимал, как с ним работать
Комментарии:
1. Похоже, вы удаляете слушателя, как только добавляете его ..?
2. да, потому
user
что изменен, и, как вы видите, я использую его в функции
Ответ №1:
Я до сих пор не знаю, как с этим бороться, но я нашел решение, я просто клонировал старую кнопку и заменил ее на клонированную, вот так :
const submit = document.getElementById("submitPost");
const newSubmit = submit.cloneNode(true);
submit.parentNode.replaceChild(newSubmit , submit)
newSubmit.addEventListener("click", submitPost);
и я все еще хочу понять, как это observal
работает