angularjs - Nodejs通过id获取用户

标签 angularjs node.js mongodb http ionic-framework

我将 MEAN 堆栈用于 app,我有用户使用 satellizer 注册和登录,一切正常。

但是当我尝试通过它的 ID 获取用户时,我什么也得不到,我可以请求获取所有用户,但不能通过 ID。

注意我使用 Ionicframework 作为 forntEnd 框架。 这是我的后端端点的代码:

app.get('/api/me', function(req, res) {
  User.findById(req.user, function(err, user) {
    console.log(req.user);
    console.log(user);
    res.send(user);
  });
})

我的前端代码 Controller :

.controller('ProfileCtrl', function($scope, $http, $stateParams, $ionicLoading, $timeout, $stateParams) {

    $ionicLoading.show({
        template: 'Loading...'
    });

    $http.get('http://localhost:3000/api/me')
        .success(function(data) {
            console.log("Recived data via HTTP", data);

            $timeout(function() {
                $ionicLoading.hide();
                $scope.user = data;
            }, 1000);
        })
        .error(function() {
            console.log("Error while getting the data");
            $ionicLoading.hide();
        });
})

请求 header :

Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,ar;q=0.6,fi;q=0.4,it;q=0.2,en-GB;q=0.2,en-CA;q=0.2
Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1NTAxYjAxMmExMjRlZjIwMTc4M2ExMTQiLCJleHAiOjE0MjcxMzk0NDV9.x9QEdE4E-Vh1SklCheiZqsnJsg8jGzdJnPx2RXeZqS8
Connection:keep-alive
Host:localhost:3000
Origin:http://localhost:8100
Referer:http://localhost:8100/

最佳答案

您错过了服务器调用中的一个重要部分,即“ensureAuthenticated”:

app.get('/api/me', ensureAuthenticated, function(req, res) {
   User.findById(req.user, function(err, user) {
    res.send(user);
 });
});

这个卫星示例实现的ensureAuthenticate是一个非常简单的版本,它只是将token.sub的内容放到req.user中。这足以满足您的查询需求。通常在真实的应用程序中,人们会改用护照中间件,将用户加载到中间件并将其放入 req.user。

当使用平均堆栈时,通常 req.user 被设置为完整的用户对象,即 mongoose 文档的一个实例。你想按 id 搜索,所以给查询一个 id:

尝试

User.findById(req.user._id, function(err, user) {

相反。

但是,考虑到 req.user 已经是您正在查询的对象,可能根本不需要整个查询。

如果你想查找与认证用户不同的用户,你需要在 URL 路径中传递你想查询的 id,通常是这样的:

GET /api/users/{id}

然后你可以使用这个id

req.params.id

并将其传递给 findById() 调用

关于angularjs - Nodejs通过id获取用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29039671/

相关文章:

node.js - Sequelize,如何使用 Op.contains 找到具有特定值的模型

javascript - 使用 Express.JS 来使用 API

Mongodb 错误失败 24 : Too many open files : Using pymongo

node.js - 如何从 Mongoose 获取定义的索引

angularjs - 如何在angularjs(ng-show)中应用更改?

javascript - AngularJS:有条件的 ng 类,一个选项有多个匹配项。

node.js - Node - 将变量渲染到部分布局 ejs-locals 中

python - 针对内存中的数据运行 mongo 查询

angularjs - ionic 历史如何工作以及何时创建非根堆栈?

jquery - 使用angularjs从上到下为div设置动画