בירור | קובץ הוראות לצורת עבודה נכונה בjs
-
בגדול נכון
את ההפרדה בין Controller ל-Service ולRepository לא תמיד עושים, זה יותר נפוץ בפרויקטים גדולים
לשאילתות תשתמש בספריה מוכנה של query builder, לדוגמה https://github.com/knex/knex, ולפרויקט עתידי כדאי לשקול ORM@צדיק-תמים את ההפרדה בין Controller ל-Service ולRepository לא תמיד עושים, זה יותר נפוץ בפרויקטים גדולים
לא מדוייק
זה סגנון עבודה שתמיד כדאי לעשות
להתחיל בצורה מסודרת מאפשר לך להחליף חלקים בצורה קלה בלי לפגוע במבנה כלל
או בדוגמה בפייתון
להחליף בין fastAPI לפלאסק לכל מנגנון אחר בלי להשפיע על כל המערכת
לשנות לוגיקה בלי לגעת בראוטים או בDB
להחליף DB בלי לשנות לוגיקה של התוכנה
וכן הלאהבמיוחד שעובדים עם AI אים שום סיבה לא לנהל את הפרוייקט בצורה מלאה ותקינה לא משנה מה גודל הפרוייקט
-
@צדיק-תמים את ההפרדה בין Controller ל-Service ולRepository לא תמיד עושים, זה יותר נפוץ בפרויקטים גדולים
לא מדוייק
זה סגנון עבודה שתמיד כדאי לעשות
להתחיל בצורה מסודרת מאפשר לך להחליף חלקים בצורה קלה בלי לפגוע במבנה כלל
או בדוגמה בפייתון
להחליף בין fastAPI לפלאסק לכל מנגנון אחר בלי להשפיע על כל המערכת
לשנות לוגיקה בלי לגעת בראוטים או בDB
להחליף DB בלי לשנות לוגיקה של התוכנה
וכן הלאהבמיוחד שעובדים עם AI אים שום סיבה לא לנהל את הפרוייקט בצורה מלאה ותקינה לא משנה מה גודל הפרוייקט
@A0533057932 להחליף פריימוורק זה לא בשכבת ה Service או ה Repository
להחליף DB זה לא צורך נפוץ, בפרויקט קטן זה לא שווה את המורכבות של לעטוף הכל במעין ORM במימוש עצמי
להפריד לסרוויס כן יותר נפוץ, אבל להפריד ריפוזיטורי זה שימושי בעיקר אם אתה עושה טסטים מלאים עם DI אחרת זה סתם שכבה מיותרת שמפריעה להבנה של הקוד -
בגדול נכון
את ההפרדה בין Controller ל-Service ולRepository לא תמיד עושים, זה יותר נפוץ בפרויקטים גדולים
לשאילתות תשתמש בספריה מוכנה של query builder, לדוגמה https://github.com/knex/knex, ולפרויקט עתידי כדאי לשקול ORM -
בגדול נכון
את ההפרדה בין Controller ל-Service ולRepository לא תמיד עושים, זה יותר נפוץ בפרויקטים גדולים
לשאילתות תשתמש בספריה מוכנה של query builder, לדוגמה https://github.com/knex/knex, ולפרויקט עתידי כדאי לשקול ORM@צדיק-תמים כתב בבירור | קובץ הוראות לצורת עבודה נכונה בjs:
לשאילתות תשתמש בספריה מוכנה של query builder, לדוגמה https://github.com/knex/knex,
נראה ממש טוב.
איך זה מסתדר עם הפונקציה הגנארית, של הוספה למאגר מידע? עכשיו יצטרכו כמה פונקציות, לא?
-
@צדיק-תמים כתב בבירור | קובץ הוראות לצורת עבודה נכונה בjs:
לשאילתות תשתמש בספריה מוכנה של query builder, לדוגמה https://github.com/knex/knex,
נראה ממש טוב.
איך זה מסתדר עם הפונקציה הגנארית, של הוספה למאגר מידע? עכשיו יצטרכו כמה פונקציות, לא?
@עידו300 עברת על המדריך?
https://knexjs.org/guide/ -
@עידו300 עברת על המדריך?
https://knexjs.org/guide/@A0533057932 אני באמצע הוא לא כ"כ ברור לי, האנגלית שלי לא במיטבה...
-
@A0533057932 אני באמצע הוא לא כ"כ ברור לי, האנגלית שלי לא במיטבה...
@עידו300 גש לAI הקורב למקום מגורך
https://aistudio.google.com
ממליץ עליו למי שלא מעוניין לשלם
ושאל אותו הסבר לי את X הסבר לי את Y
איך W משתלב במערכת וכן הלאה
אני בטוח שהוא יעזור לך בצורה מלאה -
@עידו300 גש לAI הקורב למקום מגורך
https://aistudio.google.com
ממליץ עליו למי שלא מעוניין לשלם
ושאל אותו הסבר לי את X הסבר לי את Y
איך W משתלב במערכת וכן הלאה
אני בטוח שהוא יעזור לך בצורה מלאהasync function insertRecord(/*connection, */tableName, data) { // הגנה בסיסית נגד SQL injection const allowedTables = ['ads', 'ad_cities']; if (!allowedTables.includes(tableName)) { throw new Error("Invalid table name"); } // אם מדובר באובייקט יחיד → עטוף במערך const records = Array.isArray(data) ? data : [data]; if (records.length === 0) return; const validColumns = ['phone', 'type', 'profession', 'recording_path', 'min_max_price', 'ring_mode', 'ad_id', 'city']; for (const record of records) { const invalidKeys = Object.keys(record).filter(key => !validColumns.includes(key)); if (invalidKeys.length > 0) { throw new Error(`Invalid columns in record: ${invalidKeys.join(', ')}`); } } try { const result = await knex(tableName).insert(data); return result; // ב-MySQL מחזיר מערך עם ה-ID של הרשומה הראשונה שנוצרה } catch (err) { console.error("Error inserting record:", err); throw err; } }ככה?