#javascript #vue.js #google-cloud-firestore #firebase-authentication
# #javascript #vue.js #google-облако-firestore #firebase-аутентификация
Вопрос:
У меня проблема с редактированием поля «электронная почта». Когда я нажимаю «Изменить почту», электронное письмо изменяется правильно, но когда я хочу снова войти в систему, новое электронное письмо не работает, работает только старое. Как сделать так, чтобы после нажатия на изменение электронной почты оно менялось в базе данных, чтобы после повторного входа в систему новое электронное письмо работало. Я не знаю, как это сделать. У меня есть этот код.
<template>
<div class="editemail">
<div class="container">
<form class="form" @submit.prevent>
<!-- email -->
<label for="email" class="form__label">Email</label>
<input
class="form__input"
type="text"
id="email"
name="email"
:placeholder="userProfile.email"
v-model.trim="email"
/>
<button class="form__button" type="submit" @click="editEmail()">
Zmień email
</button>
</form>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex';
import * as firebase from '../firebase';
export default {
data() {
return {
email: '',
};
},
computed: {
...mapState(['userProfile']),
},
methods: {
editEmail() {
firebase.usersCollection.doc(firebase.auth.currentUser.uid).update({
email: this.email,
});
},
},
};
</script>
Ответ №1:
Если вы используете аутентификацию Firebase для входа пользователя, то используемый им адрес электронной почты не имеет ничего общего со значением, которое вы храните в базе данных.
Чтобы обновить адрес электронной почты, который Firebase использует для входа, вам также потребуется позвонить firebase.auth().currentUser.updateEmail(this.email)
, чтобы обновить адрес электронной почты пользователя.