无法将对象转换为原始值

lao*_*ren 5 javascript node.js

我将数据发布到节点服务器:

{
  "form_1": [{
    "resultName": "",
    "level": "",
    "unitOrder": "",
    "winner": "",
    "winnerOrder": "",
    "date": "1",
    "score": ""
  }],
  "form_2": [{
    "resultName": "",
    "level": "",
    "unitOrder": "",
    "winner": "",
    "winnerOrder": "",
    "date": "1",
    "score": ""
  }],
  "form_3": [{
    "resultName": "",
    "level": "",
    "unitOrder": "",
    "winner": "",
    "winnerOrder": "",
    "date": "1",
    "score": ""
  }]
}
Run Code Online (Sandbox Code Playgroud)

我尝试将console.log数据写入快递服务器:

console.log(req.body)
Run Code Online (Sandbox Code Playgroud)

但是出现错误:

TypeError:无法将对象转换为原始值

我不明白。那么如何获取数据呢?

Ehs*_*har 23

此错误背后的实际原因

当 Javascript 尝试将对象转换为字符串时。

JavaScript 将尝试调用toString()该对象的方法。大多数 Javascript 对象都有toString()Object.prototype. 但其中一些有null prototype, 没有toString()方法,因此 Javascript 将无法将这些对象转换为字符串基元。和can't convert object to primitive error will rise

要在 Javascript 中创建空原型对象,请使用此方法

let travel = Object.create(null);
Run Code Online (Sandbox Code Playgroud)

解决方案

travel = {...travel};
Run Code Online (Sandbox Code Playgroud)


ale*_*nco 7

console.log用于记录字符串或简单值

正如文档所说,您可以格式化输出,例如json console.log("body: %j", req.body)

或者更好的是,使用console.dir记录对象