我大约4天前开始使用Firebase。虽然我没有保持一致。我想在db中创建用户,尽管用户已成功创建。在用户创建之后,假设返回个人资料图片页面,它在此阶段失败。
作为这个领域的初学者,我想知道自己要做什么。
adduser(newuser) {
var promise = new Promise((resolve, reject)=> {
this.afireauth.auth.createUserWithEmailAndPassword(newuser.email, newuser.password).then(()=> {
this.afireauth.auth.currentUser.updateProfile({
displayName: newuser.displayName,
photoURL: this.mydefaultprofilepic.defaultProfileImage
}).then(()=> {
this.firedata.child(this.afireauth.auth.currentUser.uid).set({
displayName: newuser.displayName,
photoURL: this.mydefaultprofilepic.defaultProfileImage
}).then(()=> {
resolve({success: true})
}).catch((error)=> {
reject(error);
})
}).catch((error)=> {
reject(error);
})
}).catch((error)=> {
reject(error);
})
})
return promise;
}
这是我得到的错误
ERROR Error: Uncaught (in promise): Error: Reference.set failed: First argument contains undefined in property 'chatusers.AbdvZoGgqwNJcPfOpPKLqmCT1T12.photoURL'
Error: Reference.set failed: First argument contains undefined in property 'chatusers.AbdvZoGgqwNJcPfOpPKLqmCT1T12.photoURL'
at Object.exports.validateFirebaseData (vendor.js:38911)
at vendor.js:38957
at Object.exports.forEach (vendor.js:76671)
at Object.exports.validateFirebaseData (vendor.js:38940)
at Object.exports.validateFirebaseDataArg (vendor.js:38899)
at Reference.set (vendor.js:63235)
at main.js:45
at e.g (vendor.js:76794)
at Eb (vendor.js:76797)
at Ab (vendor.js:76797)
at Object.exports.validateFirebaseData (vendor.js:38911)
at vendor.js:38957
at Object.exports.forEach (vendor.js:76671)
at Object.exports.validateFirebaseData (vendor.js:38940)
at Object.exports.validateFirebaseDataArg (vendor.js:38899)
at Reference.set (vendor.js:63235)
at main.js:45
at e.g (vendor.js:76794)
at Eb (vendor.js:76797)
at Ab (vendor.js:76797)
at c (polyfills.js:3)
at c (polyfills.js:3)
at polyfills.js:3
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (vendor.js:5114)
at t.invokeTask (polyfills.js:3)
at r.runTask (polyfills.js:3)
at o (polyfills.js:3)
at e.invokeTask [as invoke] (polyfills.js:3)
at p (polyfills.js:2)
defaultErrorLogger @ vendor.js:1822
我在SO上搜索过其他类似的问题,但他们没有直接解决这种情况
答案 0 :(得分:0)
(我不确定我的答案,它只是一个领先,所以记住这一点)
我的猜测是,您尝试在不属于的地方添加一些逻辑。
当我谈论firebase身份验证时,我看到的是google登录,facebook登录...以及电子邮件登录。
如果是两个人,您的帐户上会有个人资料照片。这些图片是您的Google+图片和Facebook个人资料图片。
但是,就后者而言,你没有照片。
在所有情况下,您无法更改图片。这似乎很明显:您可以使用自己的帐户登录,但无法在其他应用程序中管理自己的帐户设置。这会导致一些严重的安全问题。
如果您想让您的用户处理他们的个人资料图片,那么您应该管理文档和存储:当您的用户注册您的网站时,请为其创建文档他。然后,当他想要更改其个人资料图片时,将图片上传到存储空间,并将URL放入文档中。
Firebase在其模块之间有明显区别: auth 用于管理用户, firestore 用于存储数据,存储用于存储数据处理文件。