javascript - 如何将数据发布和解析到节点快递
问题描述
我正在尝试将此 json 发布到 node 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-parser 并在全球范围内应用它
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
解决方案
好吧,我假设您没有在 URL 中发布 JSON,这意味着应用
app.use(bodyParser.urlencoded({ ... }))
真的帮不了你。您最可能想要的是解析 JSON 格式正文的json中间件
app.use(bodyParser.json())
推荐阅读
- android - Firebase 性能监控如何拦截 android 中传出的 http 请求?
- python - 从python关闭/除垢heroku应用程序
- angular - 如何在角数符号“#”中验证模板驱动的表单
- javascript - 为什么我定义的范围在 javascript 中不起作用?
- http - 为什么当我在 ip 而不是主机名上卷曲时需要额外的 `-k` 标志?
- python - pd.get_dummies() 带分隔符和计数
- postgresql - 违反外键约束
- python - 有没有办法自定义 PyInputPlus 显示的错误消息?
- css - 如何知道浏览器窗口大小?
- google-glass - 如何在 Google Glass Enterprise Edition 2 上启用调试模式?