Я использовал этот учебник для создания страницы входа в систему. Мой угловой код выглядит так.
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);
});
});
}
}
}]);
и мой файл маршрутов ie index.js выглядит следующим образом.
app.post('/email/check/:email', function(req, res, next){
console.log(req.query);
});
Теперь я хочу увидеть эти данные в приложении Node, чтобы я мог проверить, является ли мой идентификатор электронной почты уникальным. Но я не могу этого видеть. Это всегда дает мне пустой объект. Я консультировался со многими сообщениями SO и документами, но не смог найти ответа. Какая здесь ошибка? Что мне не хватает?
Это потому, что request.query
для содержимого querystring, и ваша электронная почта передается как часть URL-адреса. Попробуй это:
console.log(req.params.email);
Кроме того, поскольку вы передаете имя поля в качестве данных, если вы используете bodyParser
вы можете прочитать его следующим образом:
console.log(req.body.field);
Обновление основывается на вашем комментарии: по- видимому, ваш директивный код не без проблем. Если директива прикрепляется к входному элементу (это только предположение), то значение этого элемента в ele
аргумента. Итак, ваш url должен выглядеть так:
url: '/email/check/' + ele.val(),