微信小程序app.getUserInfo(function(userInfo){ that.setData({ userInfo:userInfo }) })这么写哪错了
时间: 2023-02-16 08:47:02 浏览: 133
这段代码没有明显的错误,但是需要注意以下几点:
1. 在小程序的配置文件中需要配置用户信息获取的权限。
2. 如果在页面的 onLoad 函数中调用这段代码,需要确保在获取用户信息之前已经进行过登录操作。
3. 如果使用了 this.setData({...}) 来更新页面数据,需要在该页面的 data 中定义 userInfo 变量。
4. 如果这段代码在页面的 JS 文件中,需要确保在使用 this 之前已经绑定 this 到当前页面对象。
相关问题
const app =getApp() Page({ data: { }, onShow(){ this.setData({ userInfo:app.globalData.userInfo }) }, onLoad: function (options) { }, toMyOrder(){ wx.navigateTo({ url: '/pages/me/myOders/myOrders', }) }, login(){ wx.getUserProfile({ desc: '用于完善用户信息', }) .then(res=>{ console.log(res) this.setData({ userInfo:res.userInfo }) wx.cloud.database().collection('shop_users') .where({ _openid:app.globalData.openid }) .get() .then(result=>{ console.log(result) if(result.data.length == 0){ //添加用户数据到数据库 wx.cloud.database().collection('shop_users') .add({ data:{ avatarUrl:res.userInfo.avatarUrl, nickName: res.userInfo.nickName } }) .then(addResult=>{ console.log(addResult) //获取数据库用户信息 app.getUserInfo() wx.showToast({ title: '登录成功', }) }) }else{ wx.cloud.database().collection('shop_users') .doc(result.data[0]._id) .update({ data:{ avatarUrl:res.userInfo.avatarUrl, nickName: res.userInfo.nickName } }) .then(updateResult=>{ console.log(updateResult) //获取数据库用户信息 app.getUserInfo() wx.showToast({ title: '登录成功', }) }) } }) }) }, loinOut(){ app.globalData.userInfo = null wx.setStorageSync('userInfo', null) this.setData({ userInfo:null })
这段代码是一个小程序中的页面代码,其中主要实现了以下功能:
1. 在页面显示时,将全局变量 app.globalData.userInfo 中的用户信息赋值给页面的 data 中的 userInfo 变量。
2. 点击“我的订单”按钮时,跳转到“我的订单”页面。
3. 点击“登录”按钮时,调用 wx.getUserProfile 接口获取用户的头像和昵称等信息,并将其保存到数据库中。如果该用户已经存在于数据库中,则更新其信息。
4. 点击“退出登录”按钮时,将全局变量 app.globalData.userInfo 和本地存储中的 userInfo 变量都设为 null,并将页面的 userInfo 变量也设为 null。
总体来说,这段代码实现了一个小程序中常见的用户登录、退出登录和跳转页面等功能。
denglu(){ wx.getUserProfile({ desc: '完善用户信息', }).then(res=>{ console.log(res) this.setData({ userInfo:res.userInfo }) wx.cloud.database().collection('user').where({ _openid:app.globalData.openid }).get().then(result=>{ console.log(result) if(result.data.length==0){ //添加user数据的记录 wx.cloud.database().collection('user').add({ data:{ num:Date.now, avatarUrl:res.userInfo.avatarUrl, nickName:res.userInfo.nickName } }).then(addResult=>{ console.log(addResult) app.getUserInfo() // 获取用户信息 wx.showToast({ title: '登录成功', }) }) } else{//更新用户记录 wx.cloud.database().collection('user').doc(result.data[0]._id).update({ data:{ avatarUrl:res.userInfo.avatarUrl, nickName:res.userInfo.nickName } }).then(updateResult=>{ console.log(updateResult) app.getUserInfo() wx.showToast({ title: '登录成功', }) }) } }) }) },解释
这段代码是用来处理用户登录时的逻辑,具体实现如下:
1. 使用 `wx.getUserProfile()` 方法获取用户信息,包括头像、昵称等。
2. 根据获取到的用户信息更新当前页面的 `userInfo` 数据。
3. 使用 `wx.cloud.database().collection('user').where()` 方法查找用户在云数据库中的记录,查询条件为 `_openid:app.globalData.openid`。
4. 如果查询结果为空,则说明该用户没有在云数据库中记录,此时使用 `wx.cloud.database().collection('user').add()` 方法添加一条新的记录,包括用户的 `_openid`、头像、昵称等信息,并显示提示信息 '登录成功'。
5. 如果查询结果不为空,则说明该用户已经在云数据库中有记录,此时使用 `wx.cloud.database().collection('user').doc().update()` 方法更新该用户的头像、昵称等信息,并显示提示信息 '登录成功'。
该方法可以实现用户登录功能,将用户的信息保存到云数据库中,以便在后续的操作中使用。同时,该方法还会在页面中显示提示信息,以告知用户登录是否成功。
阅读全文