Node和AngularJs:无法通过post将数据从angular传递到NodeJS

时间:2015-09-21 21:10:23

标签: angularjs node.js

我使用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帖子和文档,但找不到任何答案。 这里有什么错误?我错过了什么?

1 个答案:

答案 0 :(得分:1)

那是因为request.query用于查询字符串内容,而您的电子邮件是作为网址的一部分传递的。试试这个:

console.log(req.params.email);

此外,由于您将字段名称作为数据传递,如果您使用bodyParser,则可以这样阅读:

console.log(req.body.field);

根据您的评论进行更新:显然,您的指令代码并非没有错误。如果您的指令附加到输入元素(这只是一个假设),那么该元素的值在ele参数中。所以,你的网址应如下所示:

url: '/email/check/' + ele.val(),