2017-06-18 282 views
1

我向我的mongo服務器發送一個curl請求,並且請求一直說「無法讀取屬性」用戶名「未定義」。我最好的猜測是我的curl請求沒有正確格式化,這將解釋未定義的請求,但它對我來說看起來很好。任何人都可以看到這裏有什麼問題嗎?POST請求類型錯誤 - 無法讀取未定義的屬性

捲曲請求:

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

用戶路徑:

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 

任何幫助將不勝感激。在過去的兩個小時裏,我一直把頭靠在牆上試圖弄清楚這一點。

而且,這裏是我的server.js文件:

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...') 
}) 

我只是想後這說明我使用的bodyParser

+0

'curl -H「Content-Type:application/json」-X POST -d'{「user」:{「username」:「testuser」,「email」:「[email protected]」, 「pwd」:「pass」}}'http:// localhost:3000/api/users'對參數進行重新排序並設置Content-Type –

+0

這個功能很有魅力!謝謝你! –

回答

1

你錯過了你的請求Content-Type頭。沒有它,服務器不知道如何解釋請求主體。特別是在這種特殊情況下,Content-Type應該可能是application/json。

+0

哦,我的上帝我不能相信我忘了設置flippin內容類型。謝謝!! –

相關問題