#javascript #angularjs #node.js
#javascript #angularjs #node.js
Вопрос:
Я использую nodemailer для проверки электронной почты пользователя при регистрации. Он отправляет электронное письмо со ссылкой (что-то вроде localhost:3000/verify/?id=##).
Когда они нажимают на ссылку, это работает, и я вижу, что был сделан запрос на получение.
GET /verify/?id=141 200 2.582 ms - 4638
Я попробовал это:
api.get('/verify/?id=', function(req, res) {
console.log('verify request has been made'); // doesn't log on console
})
И я тоже пробовал это:
api.get('/verify', function(req, res) {
console.log(req.query.id);
console.log(req.param.id);
})
на основе ответов на вопросы, которые я видел здесь и в других местах, но ничего не регистрируется.
Кроме того, я использую Angular (с ngRoute), так что это может быть что-то происходит и на интерфейсе, но я новичок в MEAN stack и не знаю, с чего начать.
редактировать Вот интерфейс:
app.routes.js
angular.module('appRoutes', ['ngRoute'])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'app/views/pages/map.html',
controller: 'MainController',
})
.when('/verify/:username', {
templateUrl: 'app/verify/verify.html',
controller: 'verifyController'
})
$locationProvider.html5Mode({ enabled: true, requireBase: false });;
})
verifyController.js
angular.module('verifyController', ['verifySerivice'])
.controller('verifyController', function($routeParams, verify){
console.log('in verify controller');
var id = $routeParams.id;
verify.verifyUser(id);
})
verifyService.js
angular.module('verifyService', [])
.factory('verify', function($http) {
var verifyFactory = {};
verifyFactory.verifyUser = function(id) {
console.log('verify service accessed');
return $http.get('/verify', id)
.then(handleSuccess, handleError);
}
return verifyFactory;
})
Комментарии:
1. Вы получаете 404 или получаете неопределенное значение запроса?
2. Я не получаю 404. Это не говорит о том, что что-либо также не определено, но ни одна из консоли. выполняются инструкции журнала.
Ответ №1:
Можете ли вы предоставить код маршрутизации и код, который вы используете для отправки запроса? Если Angular обрабатывает вашу маршрутизацию, запрос может никогда не попасть на сервер узла, если вы запрашиваете URL-адрес через адресную строку браузера. Если вы используете http-модуль для выполнения запроса get AJAX, это также было бы полезно посмотреть.
Комментарии:
1. Основываясь на беглом взгляде, кажется, что вы неправильно используете угловой http.get. Он ожидает, что в качестве первого параметра будет указан путь, а во втором — объект конфигурации: docs.angularjs.org/api/ng/service /$http#получить
2. Я думаю, вам нужно будет объединить идентификатор с путем, поэтому http.get(«verify?id=» id, configObject) . Кроме того, просто попробуйте создать консольный журнал «Тестирования» в маршруте узла, чтобы узнать, попадает ли он вообще.
3. Спасибо! Это заставило вещи работать, по крайней мере, на интерфейсе. Теперь, чтобы перенести его на серверную часть….