首页 > 解决方案 > 打印对象时,console.log 如何确定要打印的属性?

问题描述

我有一个 mongodb 数据库,我正在使用 mongoose 和 nodejs。当我控制台一个猫鼬对象时,我得到了我在我的模式中定义的常用键。

console.log(mongooseObject); 
/*
{ 
  _id: 5b8b7d627defb42e3f6349ef,
  name: 'John Doe',
}
*/

但是当我尝试使用 Object.keys() 来控制它的键时,它会打印 5 个键,这些键并不是我的架构的一部分,并且必须由 mongoose 在内部用于各种操作。

console.log(Object.keys(mongooseObject)) // [ '$__', 'isNew', 'errors', '_doc', '$init' ]

我的问题是,console.log 如何确定要打印的对象的哪一部分?当直接记录对象时,它如何通过这些键及其值来确定要打印的内容?

是否有一个类定义的类似 toString() 的函数来描述对象的 JSON 表示?然后由 console.log 用来实际打印的东西。

编辑:我得到了很多与猫鼬相关的解决方案,建议我使用 .toJSON() 和 .toObject()。也许我应该明确表示我并不是真的在寻找与猫鼬相关的东西。我只是使用它的例子,因为这就是我注意到这种特殊行为的方式。我只是一般对 javascript 在这里的工作方式感兴趣。我可以写一个类来描述一个被实例化的对象应该如何被安慰吗?

标签: javascriptnode.jsjsonmongooseconsole.log

解决方案


Mongoose Object 是一个非常复杂的对象,里面有很多功能。如果您只想将对象转换为您可以使用的纯 mongo json 文档toJSON()功能,那么您可以轻松使用.keys.

 console.log(Object.keys(mongooseObject.toJSON()))

推荐阅读