שאלות של מתחיל - מקצועי ב nodejs
-
שאלה חדשה, בנוגע לכתיבת הקוד.
אם יש לי כזה קודif (!campaign_id || campaign_id === ''){ res.end("id_list_message=" + 't-לא הוגדר מספר קמפיין, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); }else{ if (!campaigns_data[campaign_id]){ res.end("id_list_message=" + 't-קמפיין לא מורשה במערכת, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); } else{ campaign_stats = campaigns_data[campaign_id]; } } var total = campaign_stats.data.total;
כאשר אין מספר קמפיין, או מספר הקמפיין אינו מופיע במערך של הקמפיינים הפעילים, אני מקבל בלוג
ReferenceError: campaign_stats is not defined
כי בעצם הוא ריק, ובJS כידוע זה קורא את כל הדף יחד ולא שורה שורה.
מה היא הדרך הנוחה ביותר לסדר קוד כעין זה שיהיה תקין?
כבר נידון קצת בתחילת השרשור, אך אשמח באם ניתן להמחיש על הדוגמא שכתבתי.
תודה -
@חוקר זה לא קשור לאיך נוד קורא את הדף, זה פשוט משתנה שמעולם לא אותחל אז הוא undefind, אתה יכול לכתוב כך:
var total = (campaign_stats && campaign_stats.data.total);
זה יבדוק אם המשתנה קיים ואם לא הוא יחזיר מיד את הundifind ולא יכשיל את הפונקציה
-
@יוסף-בן-שמעון אמר בשאלות של מתחיל - מקצועי ב nodejs:
@חוקר זה לא קשור לאיך נוד קורא את הדף, זה פשוט משתנה שמעולם לא אותחל אז הוא undefind, אתה יכול לכתוב כך:
var total = (campaign_stats && campaign_stats.data.total);
זה יבדוק אם המשתנה קיים ואם לא הוא יחזיר מיד את הundifind ולא יכשיל את הפונקציה
הפונקציה בכל מקרה רצה ולא נכשלה, אבל אני רוצה ללמוד לכתוב תקין בכל מקרה.
לפחות אם אתם מלמדים אותי בכזה מסירות שיצאו פירות מעמלכם.. -
אולי תפתח אשכול חדש לכל נושא, זה מכביד 3 עמודים לנושא אחד...
-
@יוסף-בן-שמעון אמר בשאלות של מתחיל - מקצועי ב nodejs:
אולי תפתח אשכול חדש לכל נושא, זה מכביד 3 עמודים לנושא אחד...
כעת יש לי עוד 17 הודעות עד לדף הבא, ואח"כ נעבור נושא.
או שעד אז הכל כבר יהיה מסודר בעזה"י.. -
@יוסף-בן-שמעון אמר בשאלות של מתחיל - מקצועי ב nodejs:
@חוקר זה לא קשור לאיך נוד קורא את הדף, זה פשוט משתנה שמעולם לא אותחל אז הוא undefind, אתה יכול לכתוב כך:
var total = (campaign_stats && campaign_stats.data.total);
זה יבדוק אם המשתנה קיים ואם לא הוא יחזיר מיד את הundifind ולא יכשיל את הפונקציה
@יוסף-בן-שמעון
לדעתי בשלב זה עדיף לכתוב את הדוגמאות עם תחביר הכי פשוט
בדוגמא זוif(campaign_stats) { var total = campaign_stats.data.total }
-
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
כאשר אין מספר קמפיין, או מספר הקמפיין אינו מופיע במערך של הקמפיינים הפעילים, אני מקבל בלוג
ReferenceError: campaign_stats is not definedמה שמעניין שאני קיבלתי את זה פעם אחת בלוג על כשאין מזהה ופעם נוספת כשהקמפיין אינו במערך, ולא יותר.
וזה לא נוסף ללוג בכל בקשה מחדש, רק פעם אחת לכל תרחיש. -
@אהרן @יוסף-בן-שמעון
בעצם הכי פשוט להכניס הכל ב IF הקודם.
כך:if (!campaign_id || campaign_id === ''){ res.end("id_list_message=" + 't-לא הוגדר מספר קמפיין, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); }else if (!campaigns_data[campaign_id]){ res.end("id_list_message=" + 't-קמפיין לא מורשה במערכת, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); } else{ campaign_stats = campaigns_data[campaign_id]; var total = campaign_stats.data.total; ... }
-
תודה רבה לכל אלו שעזרו וסייעו
@david @יוסף-בן-שמעון @אהרן @magicode @clickone
מקוה שלא פיספסתי מישהו.
ב"ה הייתה התקדמות משמעותית היום, השלמתי בניית מערכת שעובדת בצורה חלקה, כמובן בעזרתכם.
עדיין לא גמרתי, אני לא למדתי עדיין מספיק את השפה, אבל כבר היה מספיק בסיסי כדי לעשות משהו שזז באמת..
במיוחד תודה ל @magicode על הדוגמה הראשונה שנתן, זה נתן לי פריצת דרך רצינית, וכן לימדה אותי פרק נוסף בנושא.
וכן ל @david שדחף אותי להיכנס לזה..
תודהנ.ב. אני מקוה שסיימתי לאשכול זה, הנושא הבא כבר יהיה באשכול חדש..
-
@חוקר עכשיו נפל לי האסימון (במסגרת 17 ההודעות שנותרו לאשכול...) כשאתה קורא ל
res.end
אתה אמור לעצור את הריצה של הפונקציה, היא לא אמורה להמשיך לרוץ, אתה צריך לכתוב כךif (!campaign_id || campaign_id === ''){ return res.end("id_list_message=" + 't-לא הוגדר מספר קמפיין, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); }else{ if (!campaigns_data[campaign_id]){ return res.end("id_list_message=" + 't-קמפיין לא מורשה במערכת, לא ניתן לבצע פעולה זו.' + '&' + "go_to_folder=/" + 'hangup'); } else{ campaign_stats = campaigns_data[campaign_id]; } } var total = campaign_stats.data.total;
-
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
תודה רבה לכל אלו שעזרו וסייעו
@david @יוסף-בן-שמעון @אהרן @magicode @clickone
מקוה שלא פיספסתי מישהו.
ב"ה הייתה התקדמות משמעותית היום, השלמתי בניית מערכת שעובדת בצורה חלקה, כמובן בעזרתכם.
עדיין לא גמרתי, אני לא למדתי עדיין מספיק את השפה, אבל כבר היה מספיק בסיסי כדי לעשות משהו שזז באמת..
במיוחד תודה ל @magicode על הדוגמה הראשונה שנתן, זה נתן לי פריצת דרך רצינית, וכן לימדה אותי פרק נוסף בנושא.
וכן ל @david שדחף אותי להיכנס לזה..
תודהנ.ב. אני מקוה שסיימתי לאשכול זה, הנושא הבא כבר יהיה באשכול חדש..
למי שעדיין לא שם לב, אכן דובר כאן הכל על צ'רידי, אבל יישמתי את זה בגדול דבר ראשון על קוזמאצ'..
*8002
חדי אוזן יכולים להשים לב למהירות התגובה של שלוחת שמיעת מצב הקמפיין ותרומות אונליין, לעומת מה שהיה בקמפיינים קודמים שלי עם צ'רידי שהיו באמצעות PHP.
בעזה"י בהמשך נשלים גם מול צ'רידי. (אולי עבור קמניץ?)
שוב תודה ענקית לכל אלו שיעצו ועזרו.
נ.ב. @david בהתחלה לא קלטתי את הרעיון של נוד, אבל לאחר הדוגמה הראשונה של @magicode וההסבר של @אהרן קלטתי מה התכוונת, ולכן נכנסתי לזה חזק.
כעת יהיה עלי לתכנן לפני כל מערכת באיזה שפה עדיף.. -
@אהרן אמר בשאלות של מתחיל - מקצועי ב nodejs:
@חוקר
אני עדיין לא מעכל, חפש פה בפורום מתי הסברתי משהו ככה בפרוטרוט
לא תמצא בהיסטוריה 20 שנה אחורה
ועוד שעתיים לפני שבת?לזה קוראים, הטשולנט לפי האורחים.
זה היה ממש משמים, אחרת לא הייתי פותח את הראש להבין מהו בעצם תהליך של נוד.
חשבתי שיש רק PHP..
עזרת לי מאוד.
יש לך חלק במאות התרומות שעברו דרך הטלפון..