Я пытаюсь ввести пользователя в свое приложение, используя его имя пользователя и пароль. Я читал о Create Custom Tokens
и Authenticate with Firebase in JavaScript Using a Custom Authentication System
, но все еще не понимал, как это реализовать, поэтому попробовал другой подход. Когда пользователь вводит свое имя пользователя, приложение будет искать в коллекции Firestore, если такое имя пользователя существует, и если это так, возьмите поле email
для этого пользователя и перейдите к методу signInWithEmailAndPassword(email, password);
. Я получаю указанную выше ошибку, потому что я не уважайте Cloud Firestore Data model
где должна быть структура collection - document - collection - document
.
Как мне действовать в таком случае?
Моя схема Firestore выглядит так
users
- username1
- userId
- email
- username2
- userId
- email
JavaScript код
app.post("/login", (req, res) => {
const user = {
username: req.body.username,
password: req.body.password
};
...
let email;
db.doc(`/users/${user.username}`).get()
.then((doc) => {
if (doc.exists) {
email = db.doc(`/users/${user.username}/email`).get();
firebase.auth().signInWithEmailAndPassword(email, user.password)
.then((data) => {
return data.user.getIdToken();
})
.then((token) => {
return res.json({token});
})
...