seawave
seawave
  • 发布:2022-12-15 16:43
  • 更新:2022-12-15 19:50
  • 阅读:171

用户首次登陆获取不到头像,登录异常

分类:uni-app
2022-12-15 16:43 负责人:无 分享
已邀请:
瀚海浪亭

瀚海浪亭 - 百度一下,我告诉你。

你这个显示showToast未定义,方便贴代码吗?

  • seawave (作者)

    代码贴在下方回复中了,帮看下,感谢!

    2022-12-15 19:47

seawave

seawave (作者) - seawave

async getUserProfile(){
uni.showLoading();
let res = await new Promise((callBack) => {
uni.getUserProfile({
desc: "用于设置账户昵称和头像",
complete: (e) => {
console.log("getUserProfile:", e);//这里能获取到头像了,能更新到数据库,但返回到我的页面时报Cannot read property 'showToast' of undefined,见附件图
callBack(e)
}
})
})
// console.log("userInfo", res.userInfo);
if(res.errMsg != "getUserProfile:ok"){
return this.closeMe()
}
let {avatarUrl,nickName} = res.userInfo;

            let tempFilePath = await new Promise((callBack)=>{  
                uni.downloadFile({  
                    url: avatarUrl,  
                    success: (res) => {  
                        if (res.statusCode === 200) {  
                            // console.log('下载成功');  
                            callBack(res.tempFilePath)  
                        }  
                        callBack()  
                    },  
                    fail: (err) => {  
                        console.error(err)  
                    },  
                    complete: (e) => {  
                        // console.log("downloadFile",e);  
                    }  
                });  
            })  
            const extName = tempFilePath.split('.').pop() || 'jpg'  
            const cloudPath = 'user/avatar/'+ userId+'/'+Date.now()+'-avatar.'+extName;  
            // console.log(tempFilePath);  
            const result = await uniCloud.uploadFile({  
                filePath: tempFilePath,  
                cloudPath,  
                fileType:'image'  
            });  
            // console.log("上传成功",{result});  
            let userInfo = {  
                "nickname":nickName,  
                "avatar_file":{  
                    name:cloudPath,  
                    extname:"jpg",  
                    url:result.fileID  
                }  
            }  
            this.doUpdate(userInfo,()=>{  
                this.$refs.popup.close()  
            })  
        },  
        closeMe(e){  
            uni.showLoading();  
            this.doUpdate({nickname:"匿名微信用户"},()=>{  
                uni.hideLoading()  
                this.$refs.popup.close()  
            })  
        },  
        doUpdate(data,callback){  
            // console.log('dododo',data);  
            // 使用 clientDB 提交数据  
            usersTable.where('_id==$env.uid').update(data).then((res) => {  
                callback(res)  
            }).catch((err) => {  
                uni.showModal({  
                    content: err.message || '请求服务失败',  
                    showCancel: false  
                })  
                callback(err)  
            }).finally(() => {  
                this.$emit('next')  
                uni.hideLoading()  
            })  
        }
seawave

seawave (作者) - seawave

这里不知道他是如何再调用了store.js中的loginSuccess方法,e没有接受到参数,不知道这个参数是怎么传过去的

  • 瀚海浪亭

    hbx更新新版本3.6.14再试试

    2022-12-16 09:39

  • seawave (作者)

    回复 瀚海浪亭: 今天早上更新了也不行,我把那个e用e?e:1这样处理了,现在获取到头像后能返回到我的页面,没有报那个错了,就是这样不知道会有什么影响

    2022-12-16 09:46

  • 瀚海浪亭

    回复 seawave: complete: (e) => {吗?换success吧,

    2022-12-16 10:02

要回复问题请先登录注册