Javascript 如何迭代对象并将所有空值替换为字符串

Javascript 如何迭代对象并将所有空值替换为字符串,javascript,node.js,Javascript,Node.js,我一直在尝试运行一个对象,并将每个空值都更改为字符串。 首先,我想检查是否得到了对象键的值。 我就是这么做的: let item = await Item.findOne({itemNumber:'5722'}); for (const [key, value] of Object.entries(item)) { console.log(key,value); } 出于某种原因,我打印的唯一键的值是:isNew、errors、\u doc、$init。 而item对象有更

我一直在尝试运行一个对象,并将每个空值都更改为字符串。 首先,我想检查是否得到了对象键的值。 我就是这么做的:

 let item = await Item.findOne({itemNumber:'5722'});

  for (const [key, value] of Object.entries(item)) {
    console.log(key,value);
  }
出于某种原因,我打印的唯一键的值是:isNew、errors、\u doc、$init。 而item对象有更多的键


任何提示?

您可以使用
将mongoose文档转换为普通对象。toObject
然后循环

 let item = await Item.findOne({itemNumber:'5722'});

  for (const [key, value] of Object.entries(item.toObject)) {
    console.log(key,value);
  }


使用for/in循环迭代对象属性。e、 g

for (p in item) {
 console.log(p + " = " item[p]);
}
这还将包括从原型链继承的任何可移植的内容


为item对象添加一个示例。请为item对象添加架构。
object.entries()
将只获取对象
项的“可枚举”字符串键。如果
item
的某些属性的
enumberable
设置为false,那么它们将不会出现在for..of looptry
for(Object.entries({…item})的const[key,value]){
中,而且您应该只使用从
item.toObject()
@sabbir.alam获取的键值对,因为我的item对象的架构太长(170个字段)所以我不会复制它。但是我可以向你保证,我从我的查询中得到了正确的对象,如果我键入“item.itemNumber”,我可以得到正确的值。看起来for循环在第五个字段之后停止
for (p in item) {
 console.log(p + " = " item[p]);
}