bmob无法获取当前用户id

微信小程序连接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后获得的当前用户就为空
如有帮助,望采纳

  1. 这个接口有限制,你需要先登录才能使用

    img

  2. 所以你先要注册

    img

  3. 然后调用登录接口

    img

  4. 同时你需要注意你的sdk用的是哪个,上面说的是新sdk

    img

如果一直无法获取当前用户的 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,那么就不会读取对象的属性,从而避免了可能的错误。