【问题标题】:Mongoose query via Angular variable通过 Angular 变量进行 Mongoose 查询
【发布时间】:2015-06-30 13:46:18
【问题描述】:

我正在尝试使用角度变量(电子邮件地址)查询我的猫鼬模型。
我有一个来自passport 的变量,其中包含电子邮件<%= user.local.email %>

我的模型的$http.get如下所示:

app.get('/profile/project/:mail', function (req, res, next){
    Project.findOne(req.params.mail, function (err, doc){
        if(err) return next(err);
        res.json(doc);
    });
});

我不知道如何使用角度控制器将邮件地址传递给 GET 请求。

我的尝试:

$http.get('/profile/project/' + <%= user.local.email %>).then(function (res){
                $scope.project = res.data;
            });
        });

findOne 参数设置为固定邮件地址是可行的,但我不知道如何使用角度控制器传递邮件地址。 希望你能帮助我。
最好的问候,大卫

使用护照更新
接近解决方案,但现在我只获得数据库的第一个数据条目。
总结一下,我的路线:

app.get('/profile/project/', function (req, res, next){
    Project.findOne(req.user.local.email, function (err, doc){
        if (err) return next(err);
        if (!doc) return next(new Error('cant find'));
        console.log(doc);
        res.json(doc); 
    });
});

我的角度控制器:

<script>
        var app = angular.module('myApp', []);

        app.controller('projectCtrl', function($scope, $http) {
            $http.get('/profile/project/').then(function (res){
                $scope.project = res.data;
            });
        });
    </script>  

护照有效,我可以登录并在个人资料页面上显示电子邮件地址。但是通过这条路线,我只是从我的数据库中获得了第一个 [0] 条目。

【问题讨论】:

    标签: angularjs mongodb mongoose mean-stack


    【解决方案1】:

    你确定要 angular 传递这个变量吗?

    如果它在护照中,那么它可能是用户自己的电子邮件?如果是这样,那么您应该完全在后端查找它。

    如果电子邮件真的是从角度传递的,那么将它放在护照中根本没有意义,你只需将它作为 js var 传递。

    编辑

    findOne 应该只返回一个结果。如果您要获取多条记录,可能需要使用find

    【讨论】:

    • 这绝对有道理!试了一下,我得到了一些数据——但不是正确的设置。我是这样实现的:'Project.findOne(passport.email, function (err, doc){...'
    • 如果你的中间件设置正确,那么你应该能够做到req.user.local.email
    • 为你编辑了我的第一篇文章
    • 我快疯了......我只期待一张唱片,所以 findOne 对我有用......但我不知道问题出在哪里。我可以以某种方式为您指定问题吗?
    • 啊,你的意思总是返回数据库的第一行?
    【解决方案2】:

    找到解决方案。非常感谢@Austin_Greco!

    路线:

    app.get('/profile/project/', isLoggedIn, function (req, res, next){
        Project.findOne({'author' : req.user.local.email}, function (err, doc){
            if (err) return next(err);
            if (!doc) return next(new Error('cant find'));
            console.log(doc);
            res.json(doc); 
        });
    });
    

    角度控制器:

    $http.get('/profile/project/').then(function (res){
        $scope.project = res.data;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 2023-04-05
      • 2015-02-20
      • 2011-10-15
      • 2014-11-17
      • 2021-11-05
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多