Jeśli masz już doświadczenie w pisaniu we front-end coś takiego, jak Webpack pewnie obiło Ci się o uszy.
Parcel to coś podobnego do Webpack'a. Służy do kompilowania kodu jak: JavaScript, TypeScript, CSS/SCSS itp. Czyli pisząc w skrócie Parcel daje programiście wszystko, co potrzebne, żeby zacząć tworzyć aplikacje.
Ktoś może zapytać: skoro istnieje Webpack to po co kolejne tego typu narzędzie?! To, co wyróżnia Parcel to ograniczenie konfiguracji do zbędnego minimum.
Potrzebujesz narzędzia, które: przekompiluje Ci kod z TypeScript do JavaScript? Dodaje style napisane SCSS? Zminimalizuje kod? Stworzy build'a gotowego do wrzucenia na produkcję?
Pobierając dane za pomocą biblioteki Mongoose dostajesz obiekt lub listę obiektów typu Mongoose document. Tego typu dokument jest znacznie większy od zwykłego obiektu JavaScript.
Ostatnio natknąłem się na jeden problem. Przykład:
Funkcja getFromDb zwraca jakieś dane dla konkretnego rekordu. Sprawdzane jest, czy pole data zawiera odpowiednie dane. Jeśli ten przykład napisany jest w TypeScript to test nie przejdzie, mimo że dane się zgadzają!
W czym jest problem? W typie, jaki Mongoose nadało polu data. Nie jest to zwykłe Array a CoreMongooseArray!
Co zrobić, żeby zwracało zwykłe obiekty JavaScript?
Rozwiązanie
Żeby nie pobierać Mongoose document a zwykłe obiekty wystarczy do zapytania dodać opcję lean:
constgetFromDb = async (id) => {
returnawaitSomeModel.findOne({ id }).lean();
}
Problem rozwiązany!
Dodatkowo wg dokumentacji pobieranie danych w taki sposób jest znacznie szybsze! Czyli same plusy prawda?
Nie do końca. Najpierw trzeba zrozumieć jak działa Mongoose document.
Dokumenty Mongoose
Mongoose pozwala na tworzenie różnych użytecznych funkcji w modelu do przetwarzania danych. Na przykład: