2017-06-18 281 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内容类型。谢谢!! –

相关问题