POST请求TypeError - 无法读取未定义的属性

时间:2017-06-18 04:16:00

标签: node.js express curl

我向我的mongo服务器发送了一个curl请求,并且该请求一直在说"无法读取属性'用户名'未定义"。我最好的猜测是我的卷曲请求没有正确格式化,这可以解释未定义的请求,但它看起来很好。任何人都可以看到问题在这里吗?

卷曲请求:

curl "http://localhost:3000/api/users" \
  --include \
  --request POST \
  --data '{
    "user": {
        "username": "testuser",
        "email": "test@email.com",
        "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

1 个答案:

答案 0 :(得分:1)

您在请求中缺少Content-Type标头。没有它,服务器不知道应该如何解释请求体。特别是在这种特殊情况下,Content-Type应该是application / json。