Node/Express/MongoDB: POST 嵌入对象 returns 空

Node/Express/MongoDB: POST embedded object returns null

我有一条简单的POST路线:

  // -------------- CREATE Event --------------
  app.post('/events', (req, res) => {

    var event = 
    { 
      title : req.body.title,
      description : req.body.description,
      address : {
        street: req.body.address.street,
        city : req.body.address.city,
        state : req.body.address.state 
      }
    }

    db.collection('events').insert( event, (err, result) => {
      if (err) {
        res.send({ 'error': 'An error has occurred' }) 
      }
      else { 
        // RETURNS: "{street : \"streetname\", city :  \"cityname\", state : \"statename\"}"
        console.log(JSON.stringify( req.body.address ))

        // RETURNS: {"title":"First Event","description":"this is my first event title","address":{},"_id":"591f512b15d612fc110dd31f"}
        console.log(JSON.stringify(result.ops[0]))

        res.send(result.ops[0])
      }
    })

    // RETURNS: {street : "streetname", city :  "cityname", state : "statename"}
    console.log(req.body.address) 

  })

当我通过 Postman 提交 POST 请求时...

...嵌入对象的值在创建时为 null,但 .insert() 方法之外的 req.body.address 显示 ` 是完整的。

{
    "_id" : ObjectId("591f49519eb9e5facb6352fe"),
    "title" : "First Event",
    "description" : "this is my first event title",
    "address" : {
        "street" : null,
        "city" : null,
        "state" : null
    }
}

tl;dr 我如何才能将嵌入对象发送到 MongoDB 而嵌入对象的值不会变为 null?

注释:

错误不在代码中,而是在 Postman 中。要发送复杂的 object,例如嵌套的 JSON object,您必须更改 Postman 请求的一些细节:

  1. 改变你的Headers

    • Content-Type : application/json
    • Accept : application/json
  2. 更改Body

    内的data-type
    • 切换到rawradio-button
    • 将类型更改为:JSON(application/json)

tl;dr 记得在发送 POST 请求时更改 JSON 的 Postman 配置