Otrzymuję wynik (obiekt) z zapytania mongoose i chcę wymienić/usunąć niektóre klucze, zanim sklasyfikuję obiekt i wyślę go do klienta.jak sprawdzić/iterować nad obiektem w węźle?
Kiedy konsoli.log obiektu, wszystko jest miłe (wszystkie klucze są wymienione, nic więcej). Kiedy robię a..in na obiekcie, ukryte pola wyskakujące znikąd (i klucze interesujące, nie). Mają sens - należą do mangusty - ale ja ich nie chcę. To samo dzieje się podczas używania Object.keys lub Object.getOwnPropertyNames w Object - ukryte pola popup, żadne z nich nie przydaje się.
Tak więc chciałem sprawdzić element za pomocą util.inspect (obj, true, null, true) i zalogować wynik do konsoli. Wynik na konsoli jest taki sam, jak gdybym konsola. Zablokował obiekt bezpośrednio bez kontroli.
Teraz dwa pytania;
- Jak poprawnie sprawdzić obiekt, aby uzyskać wewnętrzne/ukryte informacje o obiekcie?
- Jak mogę iterować po obiekcie i uzyskać tylko pola? (Tak, robię czek hasOwnProperty w pętli for..in)
// EDIT
OK, rozumiem. Po pewnym dochodzeniu zdałem sobie sprawę, że obiekt mangusty prosi o swoje właściwości i ma funkcję toJSON, co wyjaśnia, dlaczego konsola.logs była w oczekiwanej strukturze wyjściowej. Rozwiązaniem jest użycie metody Mongoose toObject;
mongooseObj.toObject({ getters: true, virtuals: false })
ten sposób mogę iteracyjne nad Object.getOwnPropertyNames i wymienić/wyjąć kluczyki nie chcę klienta wiedzieć o!
Czy możesz zmienić nieco swoje pytanie? Trudno mi zrozumieć, o co prosisz. Co rozumiesz przez "ukryte pola"? Czy to tylko właściwości, które są wyżej w łańcuchu prototypów? Właściwości oznaczone jako nieprzeliczalne? Lub właściwości zaczynające się od _underscore? –