在express中正确定义未定义的属性时,无法读取该属性
我有一个POST请求(内容类型:text/plain)的正文:在express中正确定义未定义的属性时,无法读取该属性,express,Express,我有一个POST请求(内容类型:text/plain)的正文:{“initObj”:{“UDID”:“123456”} 它显示“无法读取未定义的属性'UDID'” 当我这样做时: console.log(req.body); console.log(req.body.initObj); 它正确地显示了请求正文,但执行此操作时: console.log(req.body); console.log(req.body.initObj); 它显示未定义的 以下是服务器的配置: app.use(
{“initObj”:{“UDID”:“123456”}
它显示“无法读取未定义的属性'UDID'”
当我这样做时:
console.log(req.body);
console.log(req.body.initObj);
它正确地显示了请求正文,但执行此操作时:
console.log(req.body);
console.log(req.body.initObj);
它显示未定义的
以下是服务器的配置:
app.use(cors());
app.use(bodyParser.text());
app.use(bodyParser.json());
// parse application/vnd.api+json as json
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true })); //true
// override with the X-HTTP-Method-Override header in req
app.use(methodOverride('X-HTTP-Method-Override'));
如果将数据上传为text/plain
,req.body
将是一个字符串(包含一些JSON文本,但由于它是作为文本上传的,body解析器将不会将其解析为正确的对象)。字符串没有名为initObj
的属性
您应该自己解析数据:
let data = JSON.parse(req.body);
console.log(data.initObj);
或者上传为application/json
(这对我来说更有意义)。你能试试console.log(req.body['initObj'])
?我试过了,但同样的结果是未定义的。我也试过json.stringify(req.body);控制台日志(req.body.initObj);但是,当我测试http请求程序并将内容类型application/json放入其中时,返回未定义的问题。它将正确返回结果