在我将对象字符串化并将其发送给客户端之前,我从 mongoose 查询中得到了一个结果(对象)并想要替换/删除一些键。
当我 console.log 对象时,一切都很好(列出了所有键,仅此而已)。当我在对象上执行 for..in 时,隐藏字段会突然弹出(而感兴趣的键,不要)。它们是有道理的——它们属于猫鼬——但我不想要它们。在对象上使用 Object.keys 或 Object.getOwnPropertyNames 时也会发生同样的事情 - 隐藏字段弹出窗口,没有用处。
所以我想用 util.inspect(obj,true,null,true) 检查元素并将结果记录到控制台。控制台上的结果是一样的,就好像我在没有检查的情况下直接 console.logged 对象一样。
现在,两个问题;
- 如何正确检查对象,以便我真正获得有关该对象的内部/隐藏信息?
- 如何遍历对象并仅获取字段?(是的,我正在 for..in 循环中进行 hasOwnProperty 检查)
//编辑
好,我知道了。经过一番调查,我意识到 mongoose 对象代理了它的属性并且有一个 toJSON 函数,这就解释了为什么 console.logs 在预期的输出结构中。解决方法是使用 Mongoose 自己的 toObject 方法;
mongooseObj.toObject({ getters: true, virtuals: false })
这样,我可以遍历 Object.getOwnPropertyNames 并替换/删除我不想让客户知道的键!