Я получаю результат (объект) из запроса Мангуста и хочу заменить / удалить некоторые ключи, прежде чем я приведу в соответствие объект и отправлю его клиенту.
Когда я console.logобъект, все хорошо (все ключи перечислены, ничего более).Когда я делаю for..in для объекта, скрытые поля выскакивают из ниоткуда (а интересующие ключи - нет).Они имеют смысл - они принадлежат мангусте - но я не хочу их.То же самое происходит при использовании Object.keys или Object.getOwnPropertyNames в Object - всплывающее окно со скрытыми полями, бесполезное.
Поэтому я хотел проверить элемент с помощью util.inspect (obj, true, null, true)и записать результат в консоль.Результат на консоли такой же, как если бы я console.logged объект непосредственно без проверки.
Теперь два вопроса;
- Как правильно проверитьобъект, так что я действительно получаю внутреннюю / скрытую информацию об объекте?
- Как я могу перебирать объект и получать только поля?(да, я выполняю проверку hasOwnProperty в цикле for..in)
// РЕДАКТИРОВАТЬ
ОК, я понял.После некоторого исследования я понял, что объект mongoose проксирует свои свойства и имеет функцию toJSON, которая объясняет, почему console.logs были в ожидаемой структуре вывода.Решение состоит в том, чтобы использовать собственный метод toObject Mongoose;
mongooseObj.toObject({ getters: true, virtuals: false })
Таким образом, я могу перебирать Object.getOwnPropertyNames и заменять / удалять ключи, о которых клиент не хочет знать!