2017-06-18 28 views
1

Ich sende eine Curl-Anfrage an meinen Mongo-Server und die Anfrage sagt immer wieder: "Kann Eigenschaft 'Benutzername' von undefined nicht lesen". Meine beste Vermutung ist, dass meine Curl-Anfrage nicht korrekt formatiert ist, was die undefinierte Anfrage erklären würde, aber es sieht gut aus für mich. Kann jemand sehen, was das Problem hier ist?POST Request TypeError - kann nicht lesen Eigenschaft von undefined

Curl-Anfrage:

curl "http://localhost:3000/api/users" \ 
    --include \ 
    --request POST \ 
    --data '{ 
    "user": { 
     "username": "testuser", 
     "email": "[email protected]", 
     "pwd": "pass" 
    } 
}' 

Benutzer Routen:

const router = require('express').Router() 
const bcrypt = require('bcryptjs') 
const User = require('../models/user') 
router.post('/', (req, res) => { 
    const user = new User({ 
    username: req.body.user.username, 
    email: req.body.user.email, 
    passhash: bcrypt.hashSync(req.body.user.pwd, 10) 
    }) 
    user.save().then(
    (newuser) => { 
     res.json({ 
     user: newuser, 
     message: 'success' 
     })enter code here 
    }, 
    (err) => { 
     res.send(500, 'Error is: ' + err.message) 
    } 
) 
}) 
module.exports = router 

Jede Hilfe wäre sehr geschätzt. Ich habe in den letzten zwei Stunden meinen Kopf gegen die Wand geschlagen, um das herauszufinden.

hier ist auch meine server.js Datei:

const express = require('express') 
const app = express() 
const bodyParser = require('body-parser') 

app.use(bodyParser.json()) 

app.use('/test', function(req, res) { 
    res.send('hello world') 
}) 

app.use('/api/users', require('./routes/users')) 

app.listen(3000, function() { 
    console.log('app is listening on port 3000...') 
}) 

Ich wollte dies nur, um es zu zeigen, dass ich die bodyParser bin mit

+0

Wie wäre es mit 'curl -H' Content-Type: application/json "-X POST -d '{" Benutzer ": {" Benutzername ":" testuser "," email ":" [email protected] ", "pwd": "pass"}} 'http: // localhost: 3000/api/users' Argumente neu anordnen und den Inhaltstyp einstellen –

+0

Das funktionierte wie Charme! Danke! –

Antwort

1

Sie verpassen die Content-Type Header in Ihrer Anfrage. Ohne es weiß der Server nicht, wie der Anfragetext interpretiert werden soll. Speziell in diesem speziellen Fall sollte die Content-Type wahrscheinlich Anwendung/JSON sein.

+0

oh mein Gott ich kann nicht glauben, dass ich vergessen habe, den Flippin Content-Typ zu setzen. Danke!! –

Verwandte Themen