Фон
Я пытаюсь заполнить свой Firebase списком первоначальных пользователей в веб-приложении. Это должен быть двухэтапный процесс:
- Добавление пользователя в Firebase Auth с использованием метода
createUserWithEmailAndPassword()
. - Добавление пользователя в коллекцию Firestore с использованием
collection.add()
метод.
Код
// Initialize Firebase:
var db = firebase.initializeApp(config).firestore();
// Function to add a new user:
function add(email) {
firebase.auth().createUserWithEmailAndPassword(email, 'password')
.then(function (user) {
console.log('User created:', email, user.user.uid);
return db.collection('users').add({
email: email,
uid: user.user.uid
});
})
.then(function () {
console.log('Document created:', email);
})
.catch(function (error) {
console.error('Could not create user/document:', error);
});
}
// Seed database with random users:
for (var i = 0; i < 10; ++i) {
add(i + '@foo.bar');
}
Задача
Код из предыдущего раздела не работает. Я ожидаю, что он должен создать 10 пользователей и добавить 10 соответствующих документов в базу данных в случае успеха. Однако добавляет только часть документов (1-3) в базу данных , даже если пользователи созданы правильно.
Идеи
У меня возникли некоторые идеи Возможные причины, по которым этот код не работает:
- Метод
createUserWithEmailAndPassword()
не только создает нового пользователя, но и выполняет автоматический c вход в систему . Возможно, это может привести к некоторому состоянию гонки. - Метод
createUserWithEmailAndPassword()
возвращает обещание с объектом UserCredential
недавно зарегистрированного пользователя (я полагаю). Однако я могу ошибаться, и этот объект представляет собой пользователя , вошедшего в систему , что может быть причиной состояния гонки из предыдущего пункта. - Возможно, я использую обещает неправильно, потому что ни второй
then()
, ни catch()
не называются.