javascript - 如何将数据发布和解析到 Node express

标签 javascript json node.js express

我正在尝试将此 json 发布到 Node 快速端点

{
"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-parser 并在全局范围内应用了它

app.use(bodyParser.urlencoded({ 扩展: 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]"
    ]
}

Controller

    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

最佳答案

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

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

不会真正帮助你。您最可能想要的是 json将解析 JSON 格式 body

的中间件
app.use(bodyParser.json())

关于javascript - 如何将数据发布和解析到 Node express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029246/

相关文章:

javascript - 使用 javascript 和 jquery 动态调整 div 的大小?

javascript - meteor 路由没有响应

jquery - getJSON 到 console.log() 输出 json 结构

python - 从 2 个 json api 创建 json 并应用于每个轴的函数

javascript - 还有比redirect()和render()更好的函数吗? 【 Node 应用】

javascript - 获取用户纬度/经度位置时无法设置 React 状态

javascript - 从值输入中添加字符串的特定部分

python - Pandas Dataframe 输出到 JSON

javascript - 我可以使用 gulp 将一个文件中的内容插入到另一个文件中吗?

node.js - 通过nodejs、njs脚本语言扩展nginx