получить запрос строки запроса узла

#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. Спасибо! Это заставило вещи работать, по крайней мере, на интерфейсе. Теперь, чтобы перенести его на серверную часть….