Node.js Express ne Pouvez pas obtenir des Données Post
Quand je poste à /insertUser et de schéma.saveUser(req.) il ne trouve pas les données correctes. Je suis l'aide d'un noeud-inspecteur et il ne peut pas trouver mon post de données. J'ai aussi essayé req.corps et il ne trouve rien. Je suis de l'envoi d'un json
var express = require('express');
var bodyParser = require('body-parser');
var schema = require("./schemas");
var app = express();
app.get('/hello.txt', function(req, res){
res.send('Hello World2');
});
app.post('/insertUser', function(req, res){
console.log("Request handler 'insertUser' was called.");
//console.log(req.body);
schema.saveUser(req);
response.writeHead(200, {"Content-Type": "text/plain"});
res.send("You've sent the text: " + req);
response.write("The following data has been saved to the database: " + jsonString);
res.end();
});
var server = app.listen(8888, function() {
console.log('Listening on port %d', server.address().port);
});
function saveUser(postData){
var jsonObj = JSON.parse(postData);
var newUser = new User({
name: jsonObj.name,
email: jsonObj.email,
photoURL: jsonObj.photourl,
groups: jsonObj.groups
});
newUser.save(function(err, newUser) {
if (err) return console.error(err);
console.dir(newUser);
});
}
edit:
SyntaxError: Unexpected token o
at Object.parse (native)
at Object.saveUser (schemas.js:42:22)
at Object.handle (server.js:25:9)
at next_layer (route.js:103:13)
at Route.dispatch (route.js:107:5)
at c (index.js:195:24)
at Function.proto.process_params (index.js:251:12)
at next (index.js:189:19)
at next (index.js:166:38)
at Layer.urlencodedParser [as handle] (index.js:70:44)
- qu'est-ce que votre middleware de config ?
- Je ne suis pas tout à fait sûr de ce que c'est?
app.use(express.router)
et ce genre de choses- Je n'ai pas tout ça
- La plupart probable que le problème est du côté du client. Comment êtes-vous poster sur votre serveur?
- Droit maintenant, je suis en train de poster un json de FACTEUR sur chrome. Cependant, je vous l'utilisez avec une application android. Si je n'utilise pas exprès, je suis en mesure de publier de beaux.
- Il se complique pas ressembler à ce problème est l'express
- si votre code est plein là-bas ? quelle est votre version express (mnp ls express)
- lorsque j'utilise le débogueur, il n'est pas même obtenir une demande
- Je suis à l'aide de [email protected] et le code est bien là
- J'ai ajouté la trace de la pile
- voir mon montage sur la réponse
Vous devez vous connecter pour publier un commentaire.
Je pense que dans l'Express 4, vous devez utiliser
router
objet au lieu deapp
définir les itinéraires... quelque Chose comme ceci:Dans le client
Cannot GET /insertUser
signifie que ce est une route qui est appelée par le navigateur lorsque vous cliquez sur un lien ou en entrant l'URL de la page.Mais vous avez spécifié
app.post('/insertUser'...
ce qui signifie que la route va être appelée uniquement lors de l'utilisation de la méthode POST (utilisé lors de l'envoi de formulaires par exemple, ne JAMAIS en cliquant sur les liens)Si c'est le résultat d'un formulaire, n'oubliez pas de préciser la méthode (
<form method="post">
). Même pour les appels ajax.Si vous voulez tester le dev mode, vous pouvez utiliser Facteur sur chrome facilement qualifier de POST routes. Si vous n'avez pas de chrome utiliser curl.
Back-end
Express corps analyseur n'est pas inclus dans l'express 4.0 si vous avez besoin de l'installer ensuite l'utiliser:
Ensuite, vous pouvez utiliser
req.body