Ottieni il parametro URL in Express API da Angular UI-Router

Non riesco a ottenere il parametro dell’URL che passo quando cambi lo stato in Angular (router ui):

.state('contact.detail', { url: '/:contactId', templateUrl: 'detail.html', controller: 'DetailController' }) 

In Express definisco un’API, ma il problema è ottenere il parametro dall’URL che ho passato dal router ui (sopra).

server.js

 var express = require('express'); var mysql = require('mysql'); var url = require('url'); var app = express(); app.use('/', express.static('../app')); app.use('/bower_components', express.static('../bower_components/')); var server = require('http').createServer(app); var bodyParser = require('body-parser'); app.jsonParser = bodyParser.json(); app.urlencodedParser = bodyParser.urlencoded({ extended: true }); //mysql connection setup var connection = mysql.createConnection({ host : "localhost", port: "3306", user : "root", password : "", database : "db", multipleStatements: true }); app.get('/:id', app.urlencodedParser, function(req,res){ var id = req.params.id; console.log(id); // => :id instead of value connection.query('SELECT * FROM contacts WHERE contactId = ?', [id], function (error, results) { if(error) { throw error; } else { res.end(JSON.stringify(results)); } }); }); server.listen(3000, function () { 'use strict'; }); 

Nel registro ottengo ” : id ” invece del valore reale, ad esempio ” 45 “.

Posso accedere manualmente all’API

    inserisci la descrizione dell'immagine qui

    Si prega di dare un’occhiata al plunker per i dettagli degli stati.

    Dato che stai usando ui-router (o ngRoute), è il routing lato client, se vuoi chiamare una rotta dal tuo server devi fare una chiamata http, con $ http di servizio (o $ risorsa), come:

      //this is a example not tested. .controller('DetailController', function($scope, $stateParams,$http){ console.log('Passed parameter contact id is:', $stateParams.contactId); $scope.selectedContactId = $stateParams.contactId; $http.get("localhost:3000/"+$stateParams.contactId) .success(function(data){ //console.log(data) }) .error(function(error,status){ }) });