Я пытаюсь создать запись данных в базе данных firebase для хранения дополнительной информации о пользователе, когда он регистрируется на моем сайте.
Я пытался записать данные в базу данных в .then() функция следует за createUserWithEmailAndPassword (), поскольку это единственный способ для меня извлечь идентификатор пользователя для пользователя (я надеюсь использовать uid в качестве ключевого поля записи, которую я создаю)
(req, res) => {
// extract user data from the form
const newUser = {
fname: req.body.fname,
lname: req.body.lname,
email: req.body.email,
pw: req.body.pw,
pw_c: req.body.pw_c
}
// carry out validation
const { valid, errors } = validateRegistrationData(newUser);
if (!valid) return res.status(400).json(errors);
// create new firebase user
firebase
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.pw)
.then(data => {
let uid = data.user.uid;
// make a database entry to store the users info
// by default, assumes that the user is a secondary user
let userData = {
fname: newUser.fname,
lname: newUser.lname,
email: newUser.email,
utype: 1,
createdon: admin.firestore.FieldValue.serverTimestamp(),
intitems: []
}
newUserDoc = db
.collection("users")
.doc(uid)
.set(userData)
return res.status(200).json("Success: new user created.");
})
.catch(err => {
if (err.code === "auth/email-already-in-use"){
return res.status(400).json({ email: "Email is already in use" });
} else {
return res.status(500).json({ error: err.code });
}
});
return res.status(200).json("Success: new user created.");
}
Сервер отвечает {Success: new user created."}
. Кажется, аутентификационная часть работает при создании нового пользователя в разделе Authentication
моей консоли Firebase. Однако в коллекции users
моей базы данных нет новых записей.