запись в firestore после регистрации пользователя

#javascript #firebase #firebase-realtime-database #google-cloud-firestore #firebase-authentication

#javascript #firebase #firebase-база данных в реальном времени #google-облако-firestore #firebase-аутентификация

Вопрос:

привет, я пытаюсь написать в firestore после регистрации пользователя, он не отображается в списках firestore, где я ошибаюсь?

возникающая ошибка

`»Ошибка FirebaseError: функция CollectionReference.doc () требует, чтобы его первый аргумент имел тип непустой строки, но это было: undefined «. Я застрял на этом в течение нескольких дней, так как я новичок в firebase.

Спасибо! 🙂

 export default class Register extends React.Component {
    static navigationOptions = {
    headerShown: false
};

state = {
    name:"",
    email: "",
    password: "",
    errorMessage: null
};


handleSignUp = () => {
    try {
        firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
        .then(function(user){
        const user2 = firebase.auth().currentUser;
        const currentUser = user.uid
    
        const db = firebase.firestore();
        db.collection('users')
          .doc(user.id)
          .set({
            email: user2.email,
            name: this.state.name
          })
        });
      } catch (err) {
        Alert.alert('There is something wrong!', err.message);
      }
    }
 

Комментарии:

1. В сообщении об ошибке совершенно явно говорится, что user.id является неопределенным. Вы можете заметить, что в СВОЕМ СОБСТВЕННОМ КОДЕ вы ранее использовали user.uid

Ответ №1:

Сообщение об ошибке совершенно недвусмысленно сообщает вам, что user.id является неопределенным. Вы можете заметить в СВОЕМ СОБСТВЕННОМ КОДЕ, что ранее использовали user.uid

Так что то, что вы, вероятно, ищете, это:

 handleSignUp = () => {
    try {
        firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
        .then(function(user){
        const user2 = firebase.auth().currentUser;
        const currentUser = user.uid
    
        const db = firebase.firestore();
        db.collection('users')
          .doc(currentUser)
          .set({
            email: user2.email,
            name: this.state.name
          })
        });
      } catch (err) {
        Alert.alert('There is something wrong!', err.message);
      }
    }
 

Комментарии:

1. я благодарю вас! Я действительно только что это понял! моя проблема заключается в пользовательском вводе текста, который this.state.name когда пользователь входит в систему, как мне записать это в коллекцию firebase? Большое спасибо за вашу помощь!

2. Сейчас, сейчас — это не способ StackOverflow! Этикет StackOverflow заключается в том, что вы пытаетесь самостоятельно, находите конкретную проблему , а затем задаете ДРУГОЙ вопрос с этой конкретной проблемой — таким образом, ДРУГИЕ люди с аналогичной проблемой могут найти вопрос и, надеюсь, ответ!