微信小程序连接bmob但一直无法获取当前用户id咋办??
问题代码:
var currentUser = Bmob.User.current();
var currentUserId = currentUser.id;
问题情况:
TypeError: Cannot read property 'id' of null
at to.collect (studentDetail.js? [sm]:180)
at Object.a.safeCallback (VM1662 WAService.js:1)
at VM1662 WAService.js:1
at Tn (VM1662 WAService.js:1)
at VM1662 WAService.js:1
at le (VM1662 WAService.js:1)
at se (VM1662 WAService.js:1)
at VM1662 WAService.js:1
at VM1662 WAService.js:1
at o.emit (VM1662 WAService.js:1)(env: Windows,mp,1.05.2110110; lib: 2.27.3)
加个延时,看看是不是请求没有回来。
var currentUser = Bmob.User.current();
setTimeout(() => {
var currentUserId = currentUser.id;
console.log(currentUserId);
}, 4000);
如果延时也没用,你的配置项也都正确,那就是 bmob 这个东西的问题。不是你的问题。
你可以尝试打印出currentUser 这个对象,看看这个对象的具体值是什么
在第一次注册成功后,BmobUser.getCurrentUser().getObjectId()获取结果为null,
,logout后再登陆后就正常了,因为注册后只是保存除密码和objectid外的字段,
只有登录后才能保存当前用户然后才能获得当前用户,默认保存一年,logOut后获得的当前用户就为空
如有帮助,望采纳
如果一直无法获取当前用户的 ID,可能是因为尚未完成登录操作,当前用户就是未登录状态。在使用 Bmob.User.current() 方法来获取当前用户时,需要先进行登录操作
Bmob.User.login('username', 'password').then(res => {
// 获取当前用户
var currentUser = Bmob.User.current();
var currentUserId = currentUser.id;
console.log(currentUserId);
}).catch(err => {
console.log(err);
});
如果您已经完成了登录操作,但仍然无法获取当前用户的 ID,可能是 Bmob.User.current() 方法执行失败了
嗯,你根据这个实例的代码比对看看自己是不是哪里写的代码有问题:https://ishare.ifeng.com/c/s/7gXdpeq8iS5
个错误消息表明在您的JavaScript代码中,出现了一个未处理的null值。该错误消息来自studentDetail.js文件的第180行的to.collect函数,在该函数中,您试图读取一个对象的id属性,但这个对象是null。
要解决此错误,您需要检查您的代码,确保在访问对象的属性之前,该对象已被正确初始化。例如,如果您的代码类似于以下代码:
let obj = null;
let id = obj.id;
那么在读取obj对象的id属性时,就会抛出上述错误。为了避免这种情况,您可以在读取对象属性之前,先检查该对象是否为null。例如,您可以改写代码如下:
let obj = null;
let id = null;
if (obj != null)
{
id = obj.id;
}
这样,在读取对象的属性之前,就已经检查了该对象是否为null。如果是null,那么就不会读取对象的属性,从而避免了可能的错误。