我正在制作一个使用react和nodejs作为服务器的应用程序。我正在使用 firebase auth 和 firestore。
我有一个问题,当我创建用户时一切都很好,用户创建良好并且用户uid和数据存储在数据库中。 但是当我需要获取用户数据时说它未定义..
async function getUserData(uid) {
const docRef = doc(db, `users/${uid}`);
const docCifrada = await getDoc(docRef);
console.log(docCifrada);
const data = docCifrada.data();
console.log(` data: ${data}`);
return data;
}
这是控制台输出,因为你可以看到 docCifrada 输出很好,但在执行 .data() 后显示未定义
这就是我创建用户的方式,我使用 Firebase-admin SDK 因为我只希望管理员能够创建新用户
async function createUser(email, password, name, rol) {
axios
.post('http://localhost:5000/api/user', {
email: email,
password: password,
name: name,
rol: rol,
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
axios.get('http://localhost:5000/api/user/info').then((info) => {
const docRef = doc(db, `users/${info.data.uid}`);
setDoc(docRef, { email: email, name: name, rol: rol });
});
}
服务器端
app.post('/api/user', jsonParser, (req, res) => {
const user = req.body;
getAuth()
.createUser({
email: user.email,
password: user.password,
displayName: user.name,
})
.then((UserRecord) => {
console.log(UserRecord);
app.get('/api/user/info', (req, res) => {
res.send(UserRecord);
});
})
.catch((err) => {
console.log(err);
});
});
谢谢你
用户数据未显示
我找到了一个解决方案,我改变了在数据库中存储用户的方式,之前我将用户存储在前端,现在我将漏洞移动到服务器。
app.post('/api/user', jsonParser, async (req, res) => {
const user = req.body;
console.log(user);
await getAuth()
.createUser({
email: user.email,
password: user.password,
displayName: user.name,
})
.then((UserRecord) => {
db.collection('users').doc(UserRecord.uid).set({
email: user.email,
name: user.name,
rol: user.rol,
});
})
.catch((err) => {
console.log(err);
});
});