Javascript 获取当前用户ID

Javascript 获取当前用户ID,javascript,jquery,angularjs,node.js,mongodb,Javascript,Jquery,Angularjs,Node.js,Mongodb,我正在使用 我有两个模式: 图表 标题:字符串 数据集:数组 _创建者:已登录的用户ID 使用者 名称 电子邮件 _身份证 当I console.log时,当前用户返回 但当我尝试控制台记录_id时: $scope.getCurrentUser = Auth.getCurrentUser(); console.log($scope.getCurrentUser._id); 返回 未定义 有人能解释一下我做错了什么吗?chrome控制台中的对象只有在第一次打开时才会被评估 这意

我正在使用

我有两个模式:

图表 标题:字符串 数据集:数组 _创建者:已登录的用户ID 使用者 名称 电子邮件 _身份证 当I console.log时,当前用户返回

但当我尝试控制台记录_id时:

$scope.getCurrentUser = Auth.getCurrentUser();        
console.log($scope.getCurrentUser._id);
返回

未定义


有人能解释一下我做错了什么吗?

chrome控制台中的对象只有在第一次打开时才会被评估

这意味着,当您在console.log中记录一个对象(如Auth.getCurrentUser的返回值)时,控制台将显示对该对象的引用-在日志调用时,该对象包含一个promise对象,但最有可能在控制台上打开它时得到解决,因此您可以看到正在查找的属性

另一方面,当您记录$scope.getCurrentUser.\u id时,这是promise对象上属性查找的结果-它打印属性的当前值,该值未定义


关于干净代码的注意事项:您的范围变量称为getCurrentUser,这使人认为它是一个getter函数,但实际上它是一个getter函数的返回值。这让人困惑。

chrome控制台中的对象只有在第一次打开时才会被评估

这意味着,当您在console.log中记录一个对象(如Auth.getCurrentUser的返回值)时,控制台将显示对该对象的引用-在日志调用时,该对象包含一个promise对象,但最有可能在控制台上打开它时得到解决,因此您可以看到正在查找的属性

另一方面,当您记录$scope.getCurrentUser.\u id时,这是promise对象上属性查找的结果-它打印属性的当前值,该值未定义


关于干净代码的注意事项:您的范围变量称为getCurrentUser,这使人认为它是一个getter函数,但实际上它是一个getter函数的返回值。这令人困惑。

也许你应该从一个角度的教程开始,阅读JavaScript的异步执行。谷歌的角度承诺。基本上,请求尚未解决,您必须等待它加载…那么为什么当I console.log返回整个对象时,它返回的是未定义的id?我不知道angular fullstack,但Auth.getCurrentUser返回的是承诺,而不是您的currentUser。您需要如下内容:Auth.getCurrentUser.thenfunctionresult{//DosomethingResult;结果应该是您的currentUser}@马吕斯:当你传递一个引用时,控制台是一个观察者,然而。id会立即被评估。除此之外,isLoggedIn也不会正确更新。某些前端元素通过ng show/hide依赖它。登录后,函数仍然返回false,直到我刷新页面。有什么线索吗?也许你应该从一个角度的教程开始,阅读JavaScript的异步执行。谷歌的角度承诺。基本上,请求尚未解决,您必须等待它加载…那么为什么当I console.log返回整个对象时,它返回的是未定义的id?我不知道angular fullstack,但Auth.getCurrentUser返回的是承诺,而不是您的currentUser。您需要如下内容:Auth.getCurrentUser.thenfunctionresult{//DosomethingResult;结果应该是您的currentUser}@马吕斯:当你传递一个引用时,控制台是一个观察者,然而。id会立即被评估。除此之外,isLoggedIn也不会正确更新。某些前端元素通过ng show/hide依赖它。登录后,函数仍然返回false,直到我刷新页面。有什么线索吗?如果你研究getCurrentUser的实现,你会发现它可以同步工作,也可以异步工作。如果您不提供回调函数之类的参数,它应该同步响应。不幸的是,情况并非如此。我错过了什么吗?@molerat我知道你是从哪里来的,但你可以在OP的截图中看到一个承诺对象被归还给了他。您的推理似乎是正确的,但当时的实现可能有所不同?已经1.5年了。。。不管怎样,您似乎指出了一个与您对OP的最新评论稍不相关的问题,我建议改为打开一个新问题。如果您研究getCurrentUser的实现,您会发现它可以同步工作,也可以异步工作。如果您不提供回调函数之类的参数,它应该同步响应。不幸的是,情况并非如此。我错过了什么吗?@molerat我知道你是从哪里来的,但你可以在OP的截图中看到一个承诺对象被归还给了他。您的推理似乎是正确的,但当时的实现可能有所不同?已经1.5年了。。。不管怎样,你似乎指出了一个与你最近对OP的评论稍不相关的问题,我建议你改为提出一个新问题。
$scope.getCurrentUser = Auth.getCurrentUser();        
console.log($scope.getCurrentUser._id);