Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在express中正确定义未定义的属性时,无法读取该属性_Express - Fatal编程技术网

在express中正确定义未定义的属性时,无法读取该属性

在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(

我有一个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(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放入其中时,返回未定义的问题。它将正确返回结果