קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Javascript ♦ מדריך nodeJS Express – חלק 1 – models

מדריך nodeJS Express – חלק 1 – models

עידן יצחקי 22 בינואר 2022 אין תגובות

בחלק זה נראה נכיר את nodejs express, נדבר על התפקיד של כל חלק בו ואיך הם עובדים אחד עם השני.

הכל כמובן בקצרה ובפשטות (נצא מנקודת הנחה שהבסיס נתונים שלנו הוא מונגו – mongoDB).

מה זה nodejs express?

זה javascript שרץ בצד השרת ויכול לבצע כל מה שקוד צד שרת מסוגל לעשות, לתקשר עם DB, לספק API, לשלוט בתשובות שחוזרות לצד הלקוח ועוד הרבה שימושים אחרים. כידוע לנו JS לא יכול לרוץ בצד שרת, אז מה שעשו הוא לעטוף את הסקריפט בקוד שהשרת כן מבין ולחבר אותם אחד לשני (C++).

דבר ראשון, יש להתקין NPM ו-NODEJS:

https://nodejs.org/en/

אחרי שיש לנו אותם אפשר לעבור לשלב 2:

ניצור ספריה חדשה ששם אנחנו נעבוד.

ב-CMD בתוך הספריה נריץ את הפקודה הבאה

npm install express --save
npm install mongoose --save

בסיום הריצה נראה 2 תוספות חדשות בספריה:

  1. package-lock.json
  2. node_modules

הראשון מחזיק את ההגדרות של החבילות שצריך כדי להריץ את הפרויקט והשני מחזיק את החבילות עצמן.

שלב 3:

ניצור קובץ בשם app.js

זו נקודת הפתיחה שלנו, זה הקובץ שיאסוף את כל שאר הקבצים שניצור בהמשך.

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

בנוסף לקבצים ולספריה שהזכרנו למעלה, אנחנו ניצור את הספריות הבאות:

  1. models
  2. controllers
  3. routes
  4. middleware
  5. images

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

models

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

בנוסף, נגדיר שם אם המידע הוא חובה, הסוג שלו והשיוך שלו (סוג של FK/ קשר לזיהוי של אובייקט אחר) כך שנוכל לקשור אותם ביחד.

כך יראה מודל של המשתמש

const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');

const loginSchema = mongoose.Schema({
    firstName: { type: String, required: true },
    lastName: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true },
    birthday: { type: String },
});

loginSchema.plugin(uniqueValidator);

module.exports = mongoose.model('Login', loginSchema);

שורה 1 :

קריאה למונגוס – זהו כלי שעוזר לנו לתקשר עם mongoDB.

שורה 2:

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

שימו לב שצריך להתקין את התוסף עם NPM לפני השימוש.

שורה 4-10:

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

אפשר להגדיר את המאפיינים כ-string, number, date, bool וכו', בנוסף אנחנו מגדירים אם המאפיין הוא חובה ואפשר לראות במייל שנוסף גם unique כך שהוא יופיע רק פעם אחת ב-DB שלנו.

שורה 12:

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

שורה 14:

אנחנו מוסיפים למודול הראשי את המודל שיצרנו, קובעים מה יהיה השם שלו (נהוג להתחיל באות גדולה) ומשייכים לו את האובייקט שיצרנו בשורה 4

עכשיו נראה איך יראה מודל שמקושר למשתמש הזה

const mongoose = require('mongoose');
const skillsSchema = mongoose.Schema({
    title: { type: String, required: true },
    strength: { type: Number, required: true },
    creator: { type: mongoose.Schema.Types.ObjectId, ref: "Login", required: true }
});
module.exports = mongoose.model('Skills', skillsSchema);

על רוב השורות דיברנו כבר, השורה הנוספת היא creator.

שורה 5:

זו השורה שתחזיק את הזיהוי שהמשתמש קבל באופן אוטומטי מבסיס הנתונים ותעתיק אותו לכאן.

מה שאנחנו אומרים בשורה הזו הוא:

לחפש מאפיין מסוג ObjectId, המיקום לחיפוש הוא ב-Login וזה שדה חובה, כך שאם הוא לא ימצא, תחזור שגיאה.

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

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

פוסטים קשורים:

מדריך nodeJS Express – חלק 3 – routes מדריך nodeJS Express – חלק 2 – controllers מדריך nodeJS Express – חלק 4 – middleware תמונת אווירה של דאטהאיך לשמור או לעדכן מערך של אובייקטים ב-mongoDb בשימוש nodeJs Express
express javascript nodejs מדריך

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

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

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד