【问题标题】:POST Request TypeError - Cannot Read Property of UndefinedPOST 请求类型错误 - 无法读取未定义的属性
【发布时间】:2017-11-20 13:21:38
【问题描述】:

我正在向我的 mongo 服务器发送一个 curl 请求,并且该请求一直显示“无法读取未定义的属性‘用户名’”。我最好的猜测是我的 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

【问题讨论】:

  • curl -H "Content-Type: application/json" -X POST -d '{ "user": { "username": "testuser", "email": "test@email.com", "pwd": "pass" } }' http://localhost:3000/api/users 重新排序参数和设置 Content-Type 怎么样
  • 这很有魅力!谢谢!

标签: node.js express curl


【解决方案1】:

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

【讨论】:

  • 天哪,我不敢相信我忘了设置翻转内容类型。谢谢!!
猜你喜欢
  • 2021-12-16
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2021-11-22
  • 2017-08-12
  • 2022-12-08
相关资源
最近更新 更多