使用req参数解析嵌套对象,并使用nodejs和mongoose保存在架构中

时间:2019-07-19 07:02:08

标签: node.js mongodb mongoose

我有用于Header的嵌套对象架构,我能够使用request参数在post请求中获取嵌套对象,但是我无法在架构中存储嵌套对象的值

header.js模式文件

const mongoose = require('mongoose')

const headerSchema = mongoose.Schema({
    register: {
        name: {
            type: String
        },
        url: {
            type: String
        }
    },

    logo: {
        image: {
            type: String,
        },
        altText: {
            type: String
        },
        url: {
            type: String
        },

    }

})

module.exports = mongoose.model('header', headerSchema)

header.js路由器文件

router.post('',(req, res)=>{
    //console.log(req.body)
    const header = new headerModel({
        register:{
            name: req.body.name,
            url: req.body.url
        },
        logo:{
            image: req.body.image,
            altText: req.body.altText,
            url: req.body.url
        }
    })
    console.log(header)
})
module.exports = router

JSON

{
"register":{
        "name":"Register",
        "url":"/register"
    },
"logo":{
    "image":"/imagePath/ab.png",
    "alttext":"Home",
    "url":"/"
}
}

我需要将name和url的值分别存储在路由器文件的register和signin对象中

在登录控制台时,“路由器文件”中的标题不包含寄存器或徽标

1 个答案:

答案 0 :(得分:0)

因为您以错误的方式从JSON获取数据,但尚未保存标头。您可以通过以下方法解决它:

let header = new headerModel({
    register:{
        name: req.body.register.name,
        url: req.body.register.url
    },
    logo:{
        image: req.body.logo.image,
        altText: req.body.logo.altText,
        url: req.body.logo.url
    }
})
header.save(function (err, doc) {
  // Do some thing you want
})

相关信息可以找到here