
GetAllSongs מחזירה List<Song> באמצעות songs.Find(...). ה-Find מקבל ביטוי למדה עם הקריטריון להחזרה, ואם רוצים את הכול כותבים true, ואז ToList(). זה דומה מאוד ל-Entity Framework.GetOneSong מקבלת מחרוזת id, מבצעת Find על השירים שה-ID שלהם שווה לזה שהתקבל, ומסיימת ב-SingleOrDefault. השיר עשוי לא להתקיים, ולכן התוצאה יכולה להיות ריקה.override ל-ToString שמחזיר ID, שם, Performer ושנה, כדי לא לכתוב את המחרוזת שוב ושוב.foreach על כל השירים ומציגה אותם, ופונקציה שמציגה שיר אחד. בהצגת שיר בודד בודקים אם התוצאה ריקה, ואם כן מדפיסים הודעה שאין שיר כזה._id, וכך MongoDB קוראת לו תמיד. הערכים נוצרים ברגע ההוספה, ולכן אצל כל מי שמריץ את הקוד הם יהיו שונים. את ה-ID שבדוגמה לקח המרצה מהמסד שלו. הוא ייצא את המסד ויצרף אותו לקבצי הנושא, כדי שאפשר יהיה לייבא אותו ולקבל אותם מזהים.הטקסט המלא של הדקות הראשונות בהרצאה «קריאת Documents ממסד הנתונים - MongoDB Entity Framework» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו רוצים לבצע זה read, קריאה מהדאטאבייס. בסרוויס אני אגדיר את זה מעל כי זה מה שמקובל. קודם כל אנחנו קוראים נתונים ואחר כך מוסיפים, לא יודע למה אבל תמיד זה יותר מקובל.
זה כמובן לא חייב להיות ככה אבל בואו נבצע public ואנחנו מחזירים ליסט של song. שימו לב, song אחד אצלנו זה מודל, בדאטאבייס זה דוקיומנט. זוכרים את זה?
תאשר כל הדוקימנטס יושבים בקולקשן, הנה הקולקשן כולו ואנחנו רוצים to get all songs תביא לי את כל השירים שיש לנו בדאטאבייס, return הנה הקולקשן כולו, songs נקודה ועל ידי find אנחנו אומרים לו מה אנחנו רוצים להביא.
בואו נראה, האם find מקבלת פונקציה ריקה? לא, היא מקבלת איזושהי פונקציית מעין למדה אקספרשן שאומרת תגיד לי על כל שיר שיש לך בדאטאבייס מה הקריטריון להחזיר אותו אם אני רוצה את כל השירים אז אני פשוט רושם true בואו נהפוך את זה לטו ליסט שימו לב שזה ממש אנטיטי פריימוורק מאוד דומה לאנטיטי פריימוורק שעבדנו הנה יש לנו פונקציה שמחזירה את כל השירים בואו נבנה עוד פונקציה שמחזירה
שיר אחד על ידי איי-די גט וואן סונג בואו ניתן סטרינג איי-די יכול להיות שהשיר לא קיים אז הפעם אנחנו רוצים לבצע פיינד ועבור כל שיר בקולקשן אם האיי-די שלו שווה לאיי-די שהתקבל לפונקציה אנחנו רוצים to סינגל אור דיפולט בצורה כזאת ויש לנו כרגע את הפונקציה שאומרת לנו הנה
תביאו לי איי-די איי-די זה כמובן סטרינגי אני אחפש ואני אחזיר לכם אותו בואו נשתמש עם שתי הפונקציות האלה לצורך בדיקה ניגש לפרוגרם ונבנה כאן פונקציה, נעתיק רגע את זאת, נדביק, נקרא לה display all songs, יש לנו פה all songs,
כל השירים, הנה הservice שלנו, ואנחנו רוצים קודם כל לבנות פה list של song, songs=service.get all, אנחנו רוצים לרוץ ב-foreach song in songs בוא תציג לי אותו כמובן בשביל שהמידע ייראה כמו שצריך אנחנו צריכים כרגע two-string בואו ניגש רגע לכאן ונייצר override two-string נחזיר איזושהי מחרוזת שיש לה ID אנחנו רוצים
להחזיר את ה-ID שלנו נחזיר את השם של השיר זה יהיה ה-Name, נחזיר את ה-Performer, זה יהיה משתנה ה-Performer, ולבסוף את ה-Year, והנה יש לנו מחרוזת ב-2-String שמחזירה לנו בדיוק את מה שאנחנו רוצים מבחינת שיר אחד ויחיד.
ואז זה חוסך לי לכתוב את כל המחרוזת הזאת שוב ושוב ושוב. אנחנו חוזרים לפה, זה אמור לעבוד. בואו ניקח את כל זה, נוריד רגע את ה-Add, בואו נריץ ואנחנו רואים את כל השירים שימו לב ל-ID שהתקבל בואו נלך רגע לדאטאבייס שימו לב ה-ID בדאטאבייס הוא underline ID זה בעצם מה שמונגו db יוצרת לי by default אפילו שאני
אמרתי למונגו db שאני רוצה בעצם איזשהו שם אחר שנקרא i גדולה d קטנה מבחינת מונגו די בי זה תמיד underline id pk שהולך להיות underline id בצורה כזאת.
זה עובד בואו ננסה לראות איך אנחנו יכולים להציג רק שיר בודד display one song כאשר אנחנו חייבים בשביל