我使用this教程制作登录页面。我的角度代码看起来像这样。
app.directive('ensureUnique', ['$http', function($http) {
console.log("In validate");
return {
require : 'ngModel',
link : function(scope, ele, attrs, c) {
scope.$watch(attrs.ngModel, function() {
$http({
method : 'POST',
url : '/email/check/' + scope.$eval(attrs.ensureUnique),
data : { 'field' : attrs.ensureUnique}
}).success(function(data, status, headers, cfg){
c.$setValidity('unique', data.isUnique);
}).error(function(data, status, headers, cfg) {
c.$setValidity('unique', false);
});
});
}
}
}]);
和我的路线文件,即 index.js 就是这样。
app.post('/email/check/:email', function(req, res, next){
console.log(req.query);
});
现在我想在我的Node应用程序上看到这些数据,以便我可以验证我的电子邮件ID是否是唯一的。但我无法看到它。它总是给我一个空白的对象。我咨询了许多SO帖子和文档,但找不到任何答案。 这里有什么错误?我错过了什么?
答案 0 :(得分:1)
那是因为request.query
用于查询字符串内容,而您的电子邮件是作为网址的一部分传递的。试试这个:
console.log(req.params.email);
此外,由于您将字段名称作为数据传递,如果您使用bodyParser
,则可以这样阅读:
console.log(req.body.field);
根据您的评论进行更新:显然,您的指令代码并非没有错误。如果您的指令附加到输入元素(这只是一个假设),那么该元素的值在ele
参数中。所以,你的网址应如下所示:
url: '/email/check/' + ele.val(),