2017-08-06 4 views
0

Hey, j'ai essayé de passer deux paramètres de mon frontend angulaire au noeud api. Cependant, je reçois une erreur sur ma console de noeud que paramter value is missing or invalid lorsque j'exécute mon application. Ci-dessous voici le noeud code apiPasser des paramètres dans les services angular4

app.post('/users', function(req, res) { 
var username = req.body.username; 
var orgName = req.body.orgName; 
logger.debug('End point : /users'); 
logger.debug('User name : ' + username); 
logger.debug('Org name : ' + orgName); 
if (!username) { 
    res.json(getErrorMessage('\'username\'')); 
    return; 
} 
if (!orgName) { 
    res.json(getErrorMessage('\'orgName\'')); 
    return; 
} 
var token = jwt.sign({ 
    exp: Math.floor(Date.now()/1000) + parseInt(config.jwt_expiretime), 
    username: username, 
    orgName: orgName 
}, app.get('secret')); 
helper.getRegisteredUsers(username, orgName, true).then(function(response) { 
    if (response && typeof response !== 'string') { 
     response.token = token; 
     res.json(response); 
    } else { 
     res.json({ 
      success: false, 
      message: response 
     }); 
    } 
}); 

});

Voici mon code de service angulaire. Par souci de démonstration, je passe des valeurs fictives du service angulaire

getEnrollmentId(userName,org) { 
let headers = new Headers({ 'Content-Type': 'x-www-form-urlencoded' }); 
let options = new RequestOptions({ headers: headers }); 
let body = "'username=Barry&orgName=org2'"; 
return this.http.post('http://localhost:4000/users', body, options) 
.map((res: Response) => res.json()) 
.catch((error:any) => Observable.throw(error.json().error || 'Server error shit')); 

}

Lorsque je tente de acheive même chose en utilisant la requête boucle en appelant api de noeud et passant paramters, je suis avec succès en mesure d'afficher données et réponse de retour de l'API. Ci-dessous est curl requête

curl -s -X POST \ 
http://localhost:4000/users \ 
-H "content-type: application/x-www-form-urlencoded" \ 
-d 'username=Jim&orgName=org1' 

Qu'est-ce que je fais mal dans mes services angulaires?

Répondre

1

passer le paramètre comme params de recherche url, ci-dessous le code devrait aider

let body = new URLSearchParams(); 
body.set('username', username); 
body.set('orgName', orgName); 
+0

Il ne marchait pas. Dans mon api de noeud, il reçoit une valeur indéfinie pour ces paramètres. Voici une capture d'écran de la console de noeud https://user-images.githubusercontent.com/26554206/29001906-f9664aac-7aae-11e7-9879-35f6128a2710.png –

+0

comment vous avez défini les variables (nom d'utilisateur et orgName), qui contient la valeur . –

+0

voici le lien gist https://gist.github.com/mohammadobaid1/fd809e4cf8ece1078a6f2d57cbfb5b19 qui contient mon code de composant qui appelle mon service angulaire et le code html frontal angulaire qui récupèrent les valeurs du frontal. –