有没有一种方法可以消除终端机中的“ [Object:null prototype]”,因此它仅显示{title:'book'}?
我正在做console.log(req.body);在node / express.js
答案 0 :(得分:1)
当我们console.log一些具有 null 原型的对象...
时,Node中出现了另一个 [对象:null原型] 问题。这只是意味着对象将没有内置方法...例如=> .toString()或.hasOwnProperty()等...
const obj1 = Object.create(null);
obj1['key'] = 'SomeValue' ;
console.log(obj1);
>> [Object: null prototype] { 'key' : 'SomeValue' }
const obj2 = {};
obj2['key'] = 'SomeValue' ;
console.log(obj2);
>> { 'key' : 'SomeValue' }
当我们在 app.use(urlencoded {...})选项中将扩展名设置为 true =>时,URL编码数据将由 qs < / strong>库
当我们将其设置为false时,它由 query-string 库进行解析...
在查询字符串库(https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options)
它明确指出
querystring.parse()方法返回的对象从原型上不继承自JavaScript对象。这意味着诸如obj.toString(),obj.hasOwnProperty()之类的典型对象方法尚未定义,将无法使用。
或者换句话说,他们有空原型 ...
这就是为什么当我们在console.log(req.body)=>输出时使用{extended:false}时,在开始时输出包含其他 [Object:null prototype] 的原因...
对于其他差异,请使用
答案 1 :(得分:0)
您可以使用以下内容:
Reflect.ownKeys(obj).forEach(key => {
console.log(key + ":" + obj[key]);
});
答案 2 :(得分:0)
您可以使用以下内容:
console.log(JSON.stringify(req.body, null, 2));
最后一个参数控制用于缩进的空格数。
答案 3 :(得分:0)
这听起来像是您在解析正文时在.urlencoded()中使用{extended: false}
。尝试将其删除或更改为true。
返回几步并进行编辑,可能看起来像这样
app.use(bodyParser.urlencoded({extended: true}));
或者只是
app.use(bodyParser.urlencoded());
要了解有关扩展选项的更多信息,请阅读文档或此处的某人回答得很好-What does 'extended' mean in express 4.0?
答案 4 :(得分:0)
尝试一下,它对我有用
let payLoad = [];
Reflect.ownKeys(req.body).forEach(key => {
payLoad = JSON.parse(key);
});