通过 Angular 变量进行猫鼬查询
Mongoose query via Angular variable
我正在尝试使用 angular 变量 - 电子邮件地址查询我的猫鼬模型。
我从 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);
});
});
我不知道如何使用 angular 控制器将邮件地址传递给 GET 请求。
我的尝试:
$http.get('/profile/project/' + <%= user.local.email %>).then(function (res){
$scope.project = res.data;
});
});
将 findOne
参数设置为固定邮件地址有效,但我不知道如何使用 angular 控制器传递邮件地址。
希望你能帮助我。
最好的问候,大卫
使用护照更新
接近解决方案,但现在我只得到我的数据库的第一个数据条目。
总结一下,我的路线:
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);
});
});
我的 angular 控制器:
<script>
var app = angular.module('myApp', []);
app.controller('projectCtrl', function($scope, $http) {
$http.get('/profile/project/').then(function (res){
$scope.project = res.data;
});
});
</script>
Passport 有效,我可以登录并在个人资料页面上显示电子邮件地址。但是通过这条路线,我只是从我的数据库中获取第一个 [0] 条目。
你确定要angular传递这个变量吗?
如果在护照上,那么很可能是用户自己的电子邮箱?如果是这样,那么您应该完全在后端查找它。
如果电子邮件确实是从 angular 传递的,那么将它放在 passport 中根本没有意义,您只需将其作为 js 变量传递即可。
编辑
findOne
应该只有 return 个结果。如果您要获取多条记录,可能需要使用 find
。
得到解决方案。非常感谢@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);
});
});
Angular 控制器:
$http.get('/profile/project/').then(function (res){
$scope.project = res.data;
});
我正在尝试使用 angular 变量 - 电子邮件地址查询我的猫鼬模型。
我从 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);
});
});
我不知道如何使用 angular 控制器将邮件地址传递给 GET 请求。
我的尝试:
$http.get('/profile/project/' + <%= user.local.email %>).then(function (res){
$scope.project = res.data;
});
});
将 findOne
参数设置为固定邮件地址有效,但我不知道如何使用 angular 控制器传递邮件地址。
希望你能帮助我。
最好的问候,大卫
使用护照更新
接近解决方案,但现在我只得到我的数据库的第一个数据条目。
总结一下,我的路线:
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);
});
});
我的 angular 控制器:
<script>
var app = angular.module('myApp', []);
app.controller('projectCtrl', function($scope, $http) {
$http.get('/profile/project/').then(function (res){
$scope.project = res.data;
});
});
</script>
Passport 有效,我可以登录并在个人资料页面上显示电子邮件地址。但是通过这条路线,我只是从我的数据库中获取第一个 [0] 条目。
你确定要angular传递这个变量吗?
如果在护照上,那么很可能是用户自己的电子邮箱?如果是这样,那么您应该完全在后端查找它。
如果电子邮件确实是从 angular 传递的,那么将它放在 passport 中根本没有意义,您只需将其作为 js 变量传递即可。
编辑
findOne
应该只有 return 个结果。如果您要获取多条记录,可能需要使用 find
。
得到解决方案。非常感谢@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);
});
});
Angular 控制器:
$http.get('/profile/project/').then(function (res){
$scope.project = res.data;
});