javascript - 打印对象时,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 在这里的工作方式感兴趣。我可以写一个类来描述一个被实例化的对象应该如何被安慰吗?
解决方案
Mongoose Object 是一个非常复杂的对象,里面有很多功能。如果您只想将对象转换为您可以使用的纯 mongo json 文档toJSON()
功能,那么您可以轻松使用.keys
.
console.log(Object.keys(mongooseObject.toJSON()))
推荐阅读
- javascript - 如何通过 get 请求从函数中获取结果?
- mysql - Mysql注释表与多表相关
- three.js - Aframe:获取任何对象的顶点
- java - `java.net.SocketException: Connection reset` 请求代理
- destructuring - 你能解压小马模式匹配中的值吗?
- c# - 缓慢的 API 调用 Azure 应用服务和 Azure 标准数据库 50 (S2) 与实体框架
- python - 是否可以使用 iloc 方法在大数据帧(80000 行,6 列)中找到某些行的索引位置?
- php - php按数量规则组合和排序数组(Laravel 5.6)
- c# - 如何在我的正则表达式中使用 C# 中的未命名正则表达式组?
- spring-boot - 通过 Spring Boot 应用程序发送邮件