检查变量是否为空不工作| NodeJS,Express

时间:2017-09-01 11:02:26

标签: javascript node.js express

我正在尝试构建一个博客API,现在我的架构中有三个字段:

const PostSchema = new Schema({
  timestamp: {
    type: Date,
    default: Date.now
  },
  title: {
    type: String,
    required: [true, "Title is required"]
  },
  content: {
    type: String,
    required: [true, "Content is required"]
  }
})

我还有createPost函数,应该创建一个帖子(没有狗屎):

// Create post
const createPost = (req, res, next) => {
  const title = req.body.title
  const content = req.body.content

  console.log('body', req.body) // getting output

  if (!title) {
    res.status(422).json({ error: "Titel saknas!!!" })
  }

  if (!content) {
    res.status(422).json({ error: "Skriv något för fan!" })
  }

  const post = new Post({
    title,
    content
  })

  post.save((err, post) => {
    if (err) {
      res.status(500).json({ err })
    }
      res.status(201).json({ post })
  })
}

我有两个if语句来检查标题或内容是否为空,但是不起作用。我试图向Postman发送POST请求: enter image description here

但错误表明我的title丢失了。但我正在传递我的标题密钥。 enter image description here

所以我想知道为什么这不起作用,感觉就像一些明显的东西,但我不能让它发挥作用。

感谢阅读。

1 个答案:

答案 0 :(得分:3)

我不太了解邮递员,但我猜测将正文内容类型设置为raw会将正文上传为text/plain,这意味着{{1}不会以任何方式解析它(body-parser将显示"正文字符串" )。

相反,请尝试将内容类型设置为console.log('body', typeof req.body)(并确保您的服务器使用application/json中的JSON中间件)。