דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. רשתות
  4. פיתוח ועיצוב אתרים
  5. Full Stack
  6. צד לקוח
  7. JavaScript ES6
  8. עזרה הדדית - JavaScript
  9. בירור | nodejs תקינות פונקציה

בירור | nodejs תקינות פונקציה

מתוזמן נעוץ נעול הועבר עזרה הדדית - JavaScript
4 פוסטים 2 כותבים 12 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ע מחובר
    ע מחובר
    עידו300
    כתב נערך לאחרונה על ידי עידו300
    #1

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

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

    // פונקציה להוספת מודעה חדשה למסד הנתונים
    export async function addAd(params) {
        let command = [];
        let placeholders = [];
        let values = [];
    
        // מחפש/מפרסם - חובה
        if (params.type && checkType(params.type)) {
        command.push("type");
        placeholders.push("?");
        values.push(params.type);
        }
        else { return { error: "Invalid type" }; }
    
        // מקצוע - חובה
        if (params.profession && checkProfession(params.profession)) {
            command.push(", profession");
            placeholders.push(", ?");
            values.push(params.profession);
        }
        else { return { error: "Invalid profession" }; }
    
        // טלפון - חובה
        if (params.phone && isValidIsraeliPhone(params.phone)) {
            command.push(", phone");
            placeholders.push(", ?");
            values.push(params.phone);
        }
        else { return { error: "Invalid phone number" }; }
    
        // מינימום/מקסימום מחיר - לא חובה, אבל אם קיים חייב להיות מספר חיובי ושלם
        if (params.price) {
          if (checkNumber(params.price)) {
            command.push((params.type === "מחפש") ? ", max_payment" : ", min_payment");
            placeholders.push(", ?");
            values.push(params.price);
            }
          else { return { error: "Invalid price" }; }
        }
    
        // תדירות צינתוק  - חובה רק במחפש, אסור שיהיה במפרסם
        if (params.type === "מחפש") {
           if (params.ringMode && checkRingMode(params.ringMode)) {
              command.push(", ring_mode");
              placeholders.push(", ?");
              values.push(params.ringMode);
              }
            else { return { error: "Invalid ring mode" }; }
          }
        
        if (params.path) {
            command.push(", recording_path");
            placeholders.push(", ?");
            values.push(params.path);
        }
    
        let connection;
        connection = await mysql.createConnection({ host, user, password, database });
        await connection.beginTransaction();
        const [results] = await connection.execute(`INSERT INTO ads (${command.join('')}) VALUES (${placeholders.join('')})`,
            values
        );
    
        // אזור - לא חובה, אבל אם קיים חייב להיות תקין
        if (params.area) {
          if (checkArea(params.area)) {
              const [results1] = await connection.execute(`INSERT INTO ad_cities (ad_id, city) VALUES (?, ?)`,
             [results.insertId, params.area]);
             await connection.commit();
             return results1;
          }
          else { return { error: "Invalid area" }; }
          }
        // עיר - לא חובה, אבל אם קיים חייב להיות תקין 
        else if (params.city) {
          if (Array.isArray(params.city)) {
            for (const city of params.city) {
              if (checkCity(city)) {
                await connection.execute(`INSERT INTO ad_cities (ad_id, city) VALUES (?, ?)`,
                  [results.insertId, city]);
              } 
              else { return { error: `Invalid city: ${city}` }; }
            }
            await connection.commit();
            return { success: true };
          } 
          } else {const [results1] = await connection.execute(`INSERT INTO ad_cities (ad_id, city) VALUES (?, ?)`,
                [results.insertId, "all"]);
                await connection.commit();
                return results1;
            }
    }
    

    בפורום אחר פשוט טענו שאני לא יודע js (מה שדי נכון, למדתי תוך כדי עבודה, לא לעומק).
    יש למישהו תשובה יותר טובה? או שיוכל להסביר לי למה זה כ"כ גרוע בJS?

    עריכה: עשיתי שינויים קלים, לא משהו מהותי.

    תגובה 1 תגובה אחרונה
    0
    • ע מחובר
      ע מחובר
      עידו300
      כתב נערך לאחרונה על ידי
      #2

      רק אבהיר כמה דברים.

      1. לא השתמשתי ב in (לדוגמא
      if ("price" in params)
      

      )

      כי אין ערך שיכול להחשב כfalse והוא יעבור את הבדיקה שמתבצעת אח"כ, כך שלא אכפת לי שהוא יפול כבר שם.

      1. השתמשתי במערכים ב", type" (פסיק רווח לפני שם הפרמטר) ולא בjoin פשוט, כך התרגלתי ואני לא רואה צורך להשתמש כרגע בjoin עם ", " למרות שזה לקריטי לי.
      י תגובה 1 תגובה אחרונה
      0
      • ע עידו300

        רק אבהיר כמה דברים.

        1. לא השתמשתי ב in (לדוגמא
        if ("price" in params)
        

        )

        כי אין ערך שיכול להחשב כfalse והוא יעבור את הבדיקה שמתבצעת אח"כ, כך שלא אכפת לי שהוא יפול כבר שם.

        1. השתמשתי במערכים ב", type" (פסיק רווח לפני שם הפרמטר) ולא בjoin פשוט, כך התרגלתי ואני לא רואה צורך להשתמש כרגע בjoin עם ", " למרות שזה לקריטי לי.
        י מחובר
        י מחובר
        יהודי פשוט וטוב
        כתב נערך לאחרונה על ידי
        #3

        @עידו300 כתב בבירור | nodejs תקינות פונקציה:

        השתמשתי במערכים ב", type" (פסיק רווח לפני שם הפרמטר) ולא בjoin פשוט, כך התרגלתי ואני לא רואה צורך להשתמש כרגע בjoin עם ", " למרות שזה לקריטי לי.

        למרות שזה נראה לך כדבר פעוט,
        זה משמעותי.

        במקרה שלך זה אולי לא יכול להיתקע,

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

        השילוב של השימוש במערך בלי לנצל את היכולת של מערך = 😔

        בהצלחה!!!

        ע תגובה 1 תגובה אחרונה
        1
        • י יהודי פשוט וטוב

          @עידו300 כתב בבירור | nodejs תקינות פונקציה:

          השתמשתי במערכים ב", type" (פסיק רווח לפני שם הפרמטר) ולא בjoin פשוט, כך התרגלתי ואני לא רואה צורך להשתמש כרגע בjoin עם ", " למרות שזה לקריטי לי.

          למרות שזה נראה לך כדבר פעוט,
          זה משמעותי.

          במקרה שלך זה אולי לא יכול להיתקע,

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

          השילוב של השימוש במערך בלי לנצל את היכולת של מערך = 😔

          בהצלחה!!!

          ע מחובר
          ע מחובר
          עידו300
          כתב נערך לאחרונה על ידי עידו300
          #4

          @יהודי-פשוט-וטוב שקלתי את הסטרינג אבל אני מגיע מעולם הnet ושם שרשור סטרינגים זה דבר לא טוב כי המהדר לא יודע לעבד סטרינג, בשביל זה יש מחלקה סטרינג בילדר, לכן "על אוטומט" אני לא מתעסק עם הרכבות סטרינגים.

          אני משתמש במערך בשביל היכולת לשרשר אותו.

          בכל מקרה, שיניתי, תודה.

          תגובה 1 תגובה אחרונה
          0

          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • חוקי הפורום
          • פופולרי
          • לא נפתר
          • משתמשים
          • חיפוש גוגל בפורום
          • צור קשר