как проверять/перебирать объект в узле?

Я получаю результат (объект) обратно из запроса мангуста и хочу заменить/удалить некоторые ключи, прежде чем я преобразую объект в строку и отправлю его клиенту .

Когда я console.log объекта, все хорошо (перечислены все ключи, ничего больше). Когда я делаю for..in для объекта, скрытые поля появляются из ниоткуда (и интересующие ключи - нет). В них есть смысл — они принадлежат мангусту, — но мне они не нужны. То же самое происходит при использовании Object.keys или Object.getOwnPropertyNames для объекта — всплывающие скрытые поля, ничего полезного.

Итак, я хотел проверить элемент с помощью util.inspect(obj,true,null,true) и вывести результат на консоль. Результат на консоли такой же, как если бы я консольно записал объект напрямую без проверки.

Теперь два вопроса;

  1. Как правильно проверить объект, чтобы получить внутреннюю/скрытую информацию об объекте?
  2. Как перебрать объект и получить только поля? (да, я выполняю проверку hasOwnProperty в цикле for..in)

//РЕДАКТИРОВАТЬ

ОК, понял. После некоторого исследования я понял, что объект мангуста проксирует свои свойства и имеет функцию toJSON, что объясняет, почему console.logs были в ожидаемой структуре вывода. Решение состоит в том, чтобы использовать собственный метод toObject Mongoose;

mongooseObj.toObject({ getters: true, virtuals: false })

Таким образом, я могу перебирать Object.getOwnPropertyNames и заменить/удалить ключи, о которых я не хочу, чтобы клиент знал!

5
задан japrescott 10 March 2012 в 11:41
поделиться