Javascript Can';在注册firebase后,不要将用户添加到firestore数据库

Javascript Can';在注册firebase后,不要将用户添加到firestore数据库,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我想在使用电子邮件和密码通过firebase注册后将用户添加到firestore数据库。我没有收到任何错误,用户已创建,并且在firebase auth中可见。但是,用户未添加到firestore数据库 有人知道怎么做吗?我的代码片段粘贴在下面 firebase.initializeApp(config); const auth = firebase.auth(); const db = firebase.firestore(); auth.createUserWithEmailAndPas

我想在使用电子邮件和密码通过firebase注册后将用户添加到firestore数据库。我没有收到任何错误,用户已创建,并且在firebase auth中可见。但是,用户未添加到firestore数据库

有人知道怎么做吗?我的代码片段粘贴在下面

firebase.initializeApp(config);

const auth = firebase.auth();
const db = firebase.firestore();

auth.createUserWithEmailAndPassword(email, pass).then(cred => {
  const userId = cred.user.uid;
  const userData = {
    firstName: firstName,
    lastName: lastName,
    email: email
  };
  db.collection("users").doc(userId).set(userData).then(() => {
    console.log("User successfully added to the DB!");
  })
  .catch((e) => {
    console.log("Error adding user to the DB: ", e);
  });
}).then(() => {
  console.log('User created! - ' + email);
}).catch(e => {
  console.log(e.message);
  txtErrMsg.classList.remove('hide');
  txtErrMsg.innerHTML = e.message;
});
仅供参考:我已经在控制台上记录了参数(userId和userData),它们看起来很好


谢谢

我自己也经历过这个问题。我设法使其工作的唯一方法是先等待auth,然后将用户添加到firestore:

我在一个
firebaseConfig.js
中设置了usersCollection:

import firebase from 'firebase';
import 'firebase/firestore';

const firebaseConfig = { 
  apiKey: ......
};
firebase.initializeApp(firebaseConfig);

const auth = firebase.auth();
const db = firebase.firestore();

const usersCollection = db.collection('users');

export { auth, usersCollection };
然后,我就这样使用它

const fb = require('../firebaseConfig.js');

....

const cred = await fb.auth
    .createUserWithEmailAndPassword(
        'someemail@test.com',
        'password123'
    )
    .catch(e => {
      console.log(e.message);
    });

if (cred) {
    console.log({ cred });
    const userId = cred.user.uid;
    const userData = {
        firstName: 'firstName',
        lastName: 'lastName',
        email: 'email',
    };

    fb.usersCollection
      .doc(userId)
      .set(userData)
      .then(() => {
        console.log('User successfully added to the DB!');
      })
      .then(() => {
        console.log('User created!);
      })
      .catch(e => {
        console.log('Error adding user to the DB: ', e);
      });
}
当我运行此代码时,我在日志中得到以下信息:

它出现在我的数据库中,如下所示:
我自己也经历过这个问题。我设法使其工作的唯一方法是先等待auth,然后将用户添加到firestore:

我在一个
firebaseConfig.js
中设置了usersCollection:

import firebase from 'firebase';
import 'firebase/firestore';

const firebaseConfig = { 
  apiKey: ......
};
firebase.initializeApp(firebaseConfig);

const auth = firebase.auth();
const db = firebase.firestore();

const usersCollection = db.collection('users');

export { auth, usersCollection };
然后,我就这样使用它

const fb = require('../firebaseConfig.js');

....

const cred = await fb.auth
    .createUserWithEmailAndPassword(
        'someemail@test.com',
        'password123'
    )
    .catch(e => {
      console.log(e.message);
    });

if (cred) {
    console.log({ cred });
    const userId = cred.user.uid;
    const userData = {
        firstName: 'firstName',
        lastName: 'lastName',
        email: 'email',
    };

    fb.usersCollection
      .doc(userId)
      .set(userData)
      .then(() => {
        console.log('User successfully added to the DB!');
      })
      .then(() => {
        console.log('User created!);
      })
      .catch(e => {
        console.log('Error adding user to the DB: ', e);
      });
}
当我运行此代码时,我在日志中得到以下信息:

它出现在我的数据库中,如下所示:

我发现我的代码有什么问题

我编写了另一个方法
auth.onAuthStateChanged()
,它干扰了我写入数据库的操作。由于我有两个auth文件(
signup.js
login.js
),我决定只在
login.js
中保留此方法,并将其从
signup.js
中删除

现在,我可以在注册时成功地将用户添加到DB(
signup.js
),并且当用户只是登录(
login.js
)时,我不需要向DB添加任何内容


我希望这能帮助那些遇到同样问题的人。

我发现我的代码有什么问题

我编写了另一个方法
auth.onAuthStateChanged()
,它干扰了我写入数据库的操作。由于我有两个auth文件(
signup.js
login.js
),我决定只在
login.js
中保留此方法,并将其从
signup.js
中删除

现在,我可以在注册时成功地将用户添加到DB(
signup.js
),并且当用户只是登录(
login.js
)时,我不需要向DB添加任何内容


我希望这能帮助那些遇到同样问题的人。

你有错误吗?不,我没有错误你有错误吗?不,我没有错误谢谢你的回答Magnus。我试着这样做,但我仍然遇到同样的问题。。。
set
功能中的
console.log
都不会打印到控制台。你知道为什么吗?谢谢你的回答马格纳斯。我试着这样做,但我仍然遇到同样的问题。。。
set
功能中的
console.log
都不会打印到控制台。你知道这是为什么吗?我刚刚更新了我的答案——在我看到你自己发现之前。我花了很多时间。哈哈。不过,很高兴你找到了答案!我刚刚更新了我的答案——在我发现你自己已经找到答案之前。我花了很多时间。哈哈。不过,很高兴你找到了答案!