Javascript Can';在注册firebase后,不要将用户添加到firestore数据库
我想在使用电子邮件和密码通过firebase注册后将用户添加到firestore数据库。我没有收到任何错误,用户已创建,并且在firebase auth中可见。但是,用户未添加到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.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
都不会打印到控制台。你知道这是为什么吗?我刚刚更新了我的答案——在我看到你自己发现之前。我花了很多时间。哈哈。不过,很高兴你找到了答案!我刚刚更新了我的答案——在我发现你自己已经找到答案之前。我花了很多时间。哈哈。不过,很高兴你找到了答案!