מתכנת מונגו דיבי

26/02/2022

ברוב הפרויקטים שנעבוד עליהם נצטרך להתמודד עם יותר מטכנולוגיה אחת, לדוגמה:

  1. קוד צד שרת מתשאל בסיס נתונים באמצעות שפת השאילתות של בסיס הנתונים.

  2. קוד php יוצר קוד html.

  3. קוד ריאקט מגדיר Virtual DOM שיוצר קוד html ו JavaScript.

במצב כזה אנחנו הרבה פעמים נפגוש ספריות שנועדו להסתיר מאיתנו את הטכנולוגיה ה"פחות חשובה" - וככה אנחנו מגיעים ל ORM שמסתיר את ה SQL, או ASP.NET Server Controls שמסתירים את ה HTML וה JavaScript.

אז ב TypeORM אנחנו נשלוף משתמש מסוים עם:

const firstUser = await connection
    .getRepository(User)
    .createQueryBuilder("user")
    .where("user.id = :id", { id: 1 })
    .getOne();

וב Rails אני אשלוף את אותם פרטי משתמש עם:

first_user = User.find(1)

כשאני כותב קוד וצריך לבחור אם להשתמש בטכנולוגיה "מסתירה" מהסוג הזה, אני קודם כל שואל - "האם הייתי עדיין בוחר בה אם הייתי יודע את הטכנולוגיה שמתחת?". במקרה של ריילס למרות שאני יודע SQL אני שמח להשתמש ב ORM שלהם. הוא באמת טוב יותר, ובמקומות שהוא לא טוב יותר אני יכול לכתוב SQL רגיל בלי בעיה.

במקרה של מונגו אחרי שלמדתי לעבוד איתו לא חזרתי למונגוס, כי העבודה הישירה עם מונגו יצרה קוד שהיה הרבה יותר קל לתחזוקה.

ואם אני לא יודע עדיין את הטכנולוגיה שמתחת מספיק טוב כדי לענות על השאלה? נו, זאת הזדמנות מצוינת להתחיל ללמוד.