如何将数据发布和解析到节点快递

时间:2018-06-25 17:51:24

标签: javascript json node.js express

我正在尝试将此json发布到节点Express端点

{
"data": [
    [
        "Audit Territory",
        "LA Antelope Valley",
        "LA Central",
        "LA East San Gabriel",
        "LA San Fernando Valley",
        "LA West",
        "LA West San Gabriel",
        "OR Inland, Coastal South",
        "OR West",
        "RV Central",
        "RV Coachella Valley",
        "RV South, Central",
        "SB High Desert",
        "Unassigned"
    ],
    [
        "Auditor Name",
        "Jeanna Bonds",
        "Dawn Wiley",
        "Janet Cortez",
        "Benjamin Sally",
        "Margie Watkins",
        "Jennifer Perich",
        "Tami Anderson",
        "Christy Brant",
        "Brian Lopiccolo",
        "Kristina Clark",
        "Tina Chester",
        "Ira Brown",
        " Unassigned"
    ],
    [
        "Not Started",
        20,
        13,
        24,
        25,
        24,
        52,
        117,
        33,
        48,
        54,
        44,
        69,
        2
    ],
    [
        "In Progress",
        1,
        2,
        0,
        1,
        1,
        1,
        1,
        0,
        0,
        0,
        18,
        0,
        0
    ],
    [
        "Could Not Complete",
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
    ],
    [
        "Ready for Review",
        2,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        4,
        0,
        0
    ],
    [
        "Needs More Research",
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
    ],
    [
        "Approved",
        1,
        0,
        0,
        1,
        1,
        0,
        2,
        0,
        1,
        1,
        3,
        3,
        0
    ]
],
"colWidths": [
    25,
    25,
    25,
    25,
    30,
    30,
    30,
    25
],
"colStyles": [
    {},
    {},
    {
        "horizontalAlignment": "center"
    },
    {
        "horizontalAlignment": "center"
    },
    {
        "horizontalAlignment": "center"
    },
    {
        "horizontalAlignment": "center"
    },
    {
        "horizontalAlignment": "center"
    },
    {
        "horizontalAlignment": "center"
    }
]
 }

在express中没有正确解析它,我正在尝试找出需要什么。我尝试了几种不同的方法。

我安装了body解析器并将其全局应用

app.use(bodyParser.urlencoded({extended:true}))

没有任何改变。

*来自客户端的POST

    const _fetch = model => {
  return fetch(`http://0.0.0.0:9000/create-excels`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json; charset=utf-8'
    },
    body: JSON.stringify(model)
  }).then(statusHelper).then(response => response.json())
}

我尝试调整为此API自动生成的模型。

 const createExcelSchema = new Schema({
  data: {
    type: [[]] // Array
  },
  colWidths: {
    type: Array
  },
  colStyles: {
    type: [{}] // Array
  }
}, {
  timestamps: true,
  toJSON: {
    virtuals: true,
    transform: (obj, ret) => { delete ret._id }
  }
})

这确实影响了结果,但没有解决问题。这是我得到的结果

 {
    "data": [
        [
            "Audit Territory",
            "LA Antelope Valley",
            "LA Central",
            "LA East San Gabriel",
            "LA San Fernando Valley",
            "LA West",
            "LA West San Gabriel",
            [
                "OR Inland",
                "Coastal South"
            ],
            "OR West",
            "RV Central",
            "RV Coachella Valley",
            [
                "RV South",
                "Central"
            ],
            "SB High Desert",
            "Unassigned"
        ],
        [
            "Auditor Name",
            "Jeanna Bonds",
            "Dawn Wiley",
            "Janet Cortez",
            "Benjamin Sally",
            "Margie Watkins",
            "Jennifer Perich",
            "Tami Anderson",
            "Christy Brant",
            "Brian Lopiccolo",
            "Kristina Clark",
            "Tina Chester",
            "Ira Brown",
            "Unassigned"
        ],
        [
            "Not Started",
            "20",
            "13",
            "24",
            "25",
            "24",
            "52",
            "117",
            "33",
            "48",
            "54",
            "44",
            "69",
            "2"
        ],
        [
            "In Progress",
            "1",
            "2",
            "0",
            "1",
            "1",
            "1",
            "1",
            "0",
            "0",
            "0",
            "18",
            "0",
            "0"
        ],
        [
            "Could Not Complete",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0"
        ],
        [
            "Ready for Review",
            "2",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "4",
            "0",
            "0"
        ],
        [
            "Needs More Research",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0",
            "0"
        ],
        [
            "Approved",
            "1",
            "0",
            "0",
            "1",
            "1",
            "0",
            "2",
            "0",
            "1",
            "1",
            "3",
            "3",
            "0"
        ]
    ],
    "colWidths": "25,25,25,25,30,30,30,25",
    "colStyles": [
        "[object Object]",
        "[object Object]",
        "[object Object]",
        "[object Object]",
        "[object Object]",
        "[object Object]",
        "[object Object]",
        "[object Object]"
    ]
}

控制器

    export const create = ({ bodymen: { body } }, res, next) => {
  _createExcel(body.data, body.colWidths, body.colStyles).then(result => success(res.status(201).json(result)))
    .catch(next)
}

路线

      import { Router } from 'express'
import { middleware as body } from 'bodymen'
import { create } from './controller'
import { schema } from './model'
export CreateExcel, { schema } from './model'

const router = new Router()
const { data, colWidths, colStyles } = schema.tree

router.post('/',
  body({ data, colWidths, colStyles }),
  create)

模型

    import mongoose, { Schema } from 'mongoose'

const createExcelSchema = new Schema({
  data: {
    type: [[]]
  },
  colWidths: {
    type: Array
  },
  colStyles: {
    type: [{}]
  }
}, {
  timestamps: true,
  toJSON: {
    virtuals: true,
    transform: (obj, ret) => { delete ret._id }
  }
})

createExcelSchema.methods = {
  view (full) {
    const view = {
      // simple view
      id: this.id,
      data: this.data,
      colWidths: this.colWidths,
      colStyles: this.colStyles,
      createdAt: this.createdAt,
      updatedAt: this.updatedAt
    }

    return full ? {
      ...view
      // add properties for a full view
    } : view
  }
}

const model = mongoose.model('CreateExcel', createExcelSchema)

export const schema = model.schema
export default model

1 个答案:

答案 0 :(得分:1)

好吧,我假设您没有在URL中发布JSON,这意味着应用

app.use(bodyParser.urlencoded({ ... }))

不会真正帮助您。您最可能需要的是json中间件,它将解析JSON格式的 body

app.use(bodyParser.json())