Firebase и JavaScript. Добавление настраиваемых пользовательских полей при создании пользователя - PullRequest
0 голосов
/ 11 июля 2020

EDIT: это было сделано с помощью Next js. Я создал новый ванильный CRA. Там он работает как шарм. Похоже, проблема каким-то образом связана с Next js.

Я пытаюсь создать новый пользовательский документ, содержащий дополнительную информацию о пользователе, когда создается новый пользователь. У меня есть функция, которая сначала создаст нового пользователя, а затем заполнит новый документ в моей коллекции пользователей.

Пользователь создается, однако коллекция пользователей не заполняется новым пользовательским документом, содержащим дополнительная информация.

const createUser = (user) => {

  fire.auth()
    .createUserWithEmailAndPassword(user.email, user.password)
    .then((registeredUser) => {
      // shows me the newly created user's id.
      console.log(registeredUser.user.uid);
      fire.firestore().collection('users')
        .add({
          uid: registeredUser.user.uid,
          firstName: user.firstName,
          lastName: user.lastName,
        }).catch((err) => {
          // No errors.
          console.log(err);
        });
    });
};

Однако, если я сделаю это, я добавлю fire.firestore().collection('users').add({});

, я получу два новых документа, хранящихся в моей коллекции пользователей, оба пустых объекта из ' dummy ', а также документ с дополнительной информацией о пользователе.

const createUser = (user) => {
  // If I'm adding this line, I get both the empty object, and the additional user info
  // stored in db.
  fire.firestore().collection('users').add({});

  fire.auth()
    .createUserWithEmailAndPassword(user.email, user.password)
    .then((registeredUser) => {
      // shows me the newly created user's id.
      console.log(registeredUser.user.uid);
      fire.firestore().collection('users')
        .add({
          uid: registeredUser.user.uid,
          firstName: user.firstName,
          lastName: user.lastName,
        }).catch((err) => {
          // No errors.
          console.log(err);
        });
    });
};

Может мне кто-нибудь объяснить, почему это происходит? Почему не работает первый блок кода? Как я могу заставить работать первый блок кода, чтобы получить дополнительные пользовательские поля в базе данных?

Любая помощь будет принята с благодарностью.

С уважением, Стефан Валуа

1 Ответ

1 голос
/ 11 июля 2020

Совершенно непонятно, зачем вам нужна эта строка для добавления пустого документа:

fire.firestore().collection('users').add({});

Я бы просто удалил ее. Кажется, это не добавляет никакого значения.

Кроме того, я настоятельно рекомендую вам использовать UID пользователя в качестве идентификатора документа, вместо того, чтобы принимать случайный идентификатор, созданный с помощью add (). Это значительно упростит вам поиск документа в будущем, учитывая только UID пользователя:

fire.firestore().collection('users').doc(registeredUser.user.uid).set({
    uid: registeredUser.user.uid,
    firstName: user.firstName,
    lastName: user.lastName,
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...