我得到的结果(对象)从猫鼬查询回来,要替换/删除一些按键,之前我字符串化的对象,并将其发送给客户端。如何检查/迭代节点中的对象?
当我CONSOLE.LOG对象,一切都很好(所有键都列出来,仅此而已)。当我在对象上做一个for..in时,隐藏的字段会出现在任何地方(以及感兴趣的键,请不要)。他们有道理 - 他们属于猫鼬 - 但我不想要他们。在对象 - 隐藏字段弹出窗口中使用Object.keys或Object.getOwnPropertyNames时,同样的事情发生,没有用处。
所以我想与util.inspect检查元素(OBJ,真实,空,真)并记录结果到控制台。控制台上的结果是一样的,就好像我将console.log直接对象没有检查。
现在,两个问题;
- 如何正确检查一个对象,以便实际获取有关该对象的内部/隐藏信息?
- 我如何可以遍历对象,只能获得场? (是的,我做的for..in循环中的hasOwnProperty检查)
//编辑
OK,我知道了。经过一番调查后,我意识到,猫鼬对象代理的性质,以及具有一个功能的toJSON,这解释了为什么console.logs是在预期的输出结构。解决方案是使用Mongoose自己的toObject方法;
mongooseObj.toObject({ getters: true, virtuals: false })
这样一来,我可以遍历Object.getOwnPropertyNames和替换/删除键我不想让客户知道!
你能改写一下你的问题吗?我很难理解你在问什么。 '隐藏领域'是什么意思?原型链上的属性是否更高?标记为不可枚举的属性?或以_underscore开头的属性? – 2012-03-09 00:03:16