NODEJS שילוב משתנים במחרוזת קלט מהמשתמש
-
מקווה שהכותרת תבטא נכון את השאלה.
יש לי טבלת תזמון משימות ששולח הודעת SMS לרשימת אנשי קשר.
בטבלה שמתי עמודת טקסט שניתן להוסיף להודעה, בגדול ההודעה מורכבת מחלקי הודעות קבועות ומשתנות.
לדוג':
"שלום ??? זו הודעה מבית הכנסת ???
לידיעתך קיים על שמך חוב בסך ??? עבור ???.
נא להסדיר את החוב עד לתאריך ???"
ברצוני ליצור רשימת פרמטרים קבועים, שהלקוח יוכל להרכיב לבד את סדר ההודעה.
כגון:
"שלום name זו הודעה מבית הכנסת mosad
לידיעתך קיים על שמך חוב בסך sum עבור prod.
נא להסדיר את החוב עד לתאריך date"
ואז בעצם הוא יבטל את תבנית ברירת המחדל וישלח בהתאמה אישית משלו.
הנתונים נשמרים בטבלה ב MySQL ותהליך ה NODE בודק כל דקה האם יש משימות לביצוע עכשיו וא"כ הוא מבצע.
איך הכי מומלץ לסדר את האפשרות הנ"ל.
תודה -
אתה שומר את התבנית כך:
var template = `שלום {{name}} זו הודעה מבית הכנסת {{synagogue}} לידיעתך קיים על שמך חוב בסך {{amount}} עבור {{for}}`
וכשאתה מקבל את ההעדפות של המשתמש אתה בונה מהם אוביקט כזה:
var option = { name: "יוסף", synagogue: "בעלז", amount: 100, for: "עליה" }
ומריץ את הפונקציה הזו:
function buildOutput(template, userOptions){ for(let i in userOptions){ template = template.replace(`{{${i}}}`, userOptions[i]) } return template }
-
@יוסף-בן-שמעון
כנראה שלא הסברתי את עצמי מספיק.
אם הבנתי נכון את הדוגמא שלך הרי זה בעצם לספק את הארגומנטים הנדרשים לביצוע בניית המחרוזת, הוי אומר הצבת הערכים במשתנים.
אני רציתי שהלקוח יוכל לשחק בכלל עם סדר הכיתוב במחרוזת.
כגון במקום:
"שלום name זו הודעה מבית הכנסת mosad
לידיעתך קיים על שמך חוב בסך sum עבור prod.
נא להסדיר את החוב עד לתאריך date"
הלקוח יעשה:
"הודעה חשובה מבית הכנסת mosad.
שלום name!
עדיין לא שילמת את חובך עבור prod, בסך sum .
נא להסדיר את החוב עד לתאריך date"
שיוכל לשנות את הסדר ולהשים את המשתנים שבא לו מתוך רשימת המשתנים שאתן לו -
אגב כבר נפגשתי עם הרעיון של סוגריים מסולסלות בפריימוורק YII ב PHP.
/** * {@inheritdoc} */ public static function tableName() { return '{{%myTable}}'; }
זה אותו רעיון? שהספריה מפענחת אותו למשתנה בקוד, וזה לא באמת חלק מהליבה של PHP?
כבר מזמן רציתי לבדוק את זה ולא הגעתי לזה. -
@חוקר אתה בעצם מחפש פיתרון איך להתממשק עם הלקוח נכון?
לדעתי לא מספיק לתת לו לכתוב את המשתנים בתוך סוגריים, כי אתה גם צריך להחזיק את הרשימה של המשתנים אצלך, צריך לתת לו קודם כל להגדיר מספר משתנים ולתת להם שמות, ואחר כך לכתוב את התבנית ובתוכה להכניס את המשתנים המוגדרים מראש, ואם אתה רוצה ממש להיות ידידותי ולא לסבך את המשתמש עם סוגריים אתה צריך להסתיר את זה מאחורי הקלעים ולעבד בעצמך את התבנית.
אם אתה לא משתמש בשום פריימוורק בצד לקוח זה ידרוש ממך הרבה מאד קוד. -
-
@יוסף-בן-שמעון
בינתיים בין כך הכל מבוצע על ידי [או ע"י עובד שלי], ולא ע"י הלקוחות עצמם, לכן לא כ"כ נבהלתי לעשות לפי התחביר שראיתי כאן
וזה התוצאה
ב"ה עבד כמו שצריך