我正在尝试构建博客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语句,以检查标题或内容是否为空,但这不起作用。我试图通过邮递员发送POST请求:
javascript - 检查变量是否为空不起作用NodeJS Express-LMLPHP

但是错误表明我的title丢失了。但我正在传递我的标题密钥。
javascript - 检查变量是否为空不起作用NodeJS Express-LMLPHP

所以我想知道为什么这不起作用,感觉有些明显的东西,但是我无法使它起作用。

谢谢阅读。

最佳答案

我不太了解邮递员,但我想猜测是将正文内容类型设置为raw会将正文上载为text/plain,这意味着body-parser不会以任何方式解析它(console.log('body', typeof req.body)将显示“正文字符串”)。

相反,尝试将内容类型设置为application/json(并确保您的服务器使用body-parser中的JSON中间件)。

关于javascript - 检查变量是否为空不起作用NodeJS Express,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45998847/

10-16 21:17