javascript - Firebase SnapShot.val() 在尝试访问 vuex 中的数据时返回 null
问题描述
我正在创建一个学生、教职员工和非教学人员可以访问的应用程序。
我的表单数据如下所示:
formData: {
name: "",
email: "",
password: "",
select: null
},
options: ["Student", "Staff", "Non-Teaching Staff"],
当然在 Vuex 商店我可以注册用户:
registerUsers({}, payload) {
firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password)
.then(res => {
const userId = firebaseAuth.currentUser.uid;
console.log(res)
Notify.create({
message: 'Regsitration Successful!.',
color: 'primary',
classes: 'quick'
})
//set student
firebaseDb.ref(`users/'${userId}`).set({
name: payload.name,
email: payload.email,
select: payload.select
});
})
.catch(err => {
console.log(err)
Notify.create({
message: `${err.message}`,
classes: 'quick',
color: 'negative'
})
})
我还可以登录用户:
loginUsers({}, payload) {
firebaseAuth.signInWithEmailAndPassword(payload.email, payload.password)
.then(res => {
console.log(res);
Notify.create({
message: 'Success!',
classes: 'quick',
color: 'positive'
})
})
.catch(err => {
console.log();
Notify.create({
message: `${err.message}`,
classes: 'quick',
color: 'negative'
})
})
},
问题来自于此:
handleAuthStateChange() {
firebaseAuth.onAuthStateChanged(user => {
if (user) {
//set Student
const studentId = firebaseAuth.currentUser.uid;
console.log(studentId)
firebaseDb.ref(`users/${studentId}`).once('value', snapshot => {
console.log(snapshot.val())
})
}
})
},
Snapshot.val() 在控制台中返回 null。
请问我写错了什么。
解决方案
看来,通过调用firebaseDb.ref(`users/'${userId}`).set({...})
你正在一个节点下创建你的用户
users/'userId
用单引号 ( '
)。
你尝试读取节点
users/userId
如果您错误地添加单引号的假设是正确的,则不存在。
另外注意你不需要做
firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password)
.then(res => {
const userId = firebaseAuth.currentUser.uid;
//...
因为createUserWithEmailAndPassword()
返回一个UserCredential
. 所以你可以这样做:
firebaseAuth.createUserWithEmailAndPassword(payload.email, payload.password)
.then(res => {
const userId = res.user.uid;
//...
你也可以这样做:
handleAuthStateChange() {
firebaseAuth.onAuthStateChanged(user => {
if (user) {
const studentId = user.uid;
//......
推荐阅读
- angularjs - 尝试检测 AngularJS 中模型的编程更改
- javascript - Jest.js:模拟 URLSearchParams 返回值为 null 无法将测试推送到错误的测试路径
- amazon-web-services - 无需 IAM 访问密钥即可从外部非 aws 实体访问 AWS 资源
- php - 从查询中获取价值
- java - Prometheus http请求完成率?
- python - 将矩阵的列附加到不同的字典元素
- javascript - 有没有一种有效的方法可以从 JavaScript 中的数组中获取某种类型的所有值?
- json - 尝试使用 .net core web api 但收到此错误:解析值时遇到意外字符:<。路径 '',第 0 行,第 0 位置
- javascript - 在 SVG 地图上捏合和缩放
- python - 如何使用用户输入的数学整数函数?