Zen Eddin Allaham نشر الأربعاء في 15:40 أرسل تقرير نشر الأربعاء في 15:40 ما سبب عدم ظهور جدول todo برغم من انشائه بنجاح وحدثت قاعدة بيانات tododb اكثر من مرة ولا يظهر جدول وحدثت Table ولم يظهر جدول 2 اقتباس
0 Mustafa Suleiman نشر الأربعاء في 15:45 أرسل تقرير نشر الأربعاء في 15:45 لم تقم بإنشاء الجدول في قاعدة بيانات tododb، اضغط عليها بزر الفأرة الأيمن ثم اختر Query Tool وسيتم لك نافذة استعلام جديدة متصلة بقاعدة بيانات tododb، فقم بلصق أمر CREATE TABLE وتشغيله، وسيتم إنشاء الجدول، ثم قم بتحديث قاعدة البيانات ليظهر لك 1 اقتباس
0 Abdulrahman Muhammad نشر الأربعاء في 15:54 أرسل تقرير نشر الأربعاء في 15:54 مرحباً، السبب هو عدم كتابة الكود في المكان الصحيح داخل قاعدة البيانات tododb: لإصلاح ذلك: اضغط بزر الفأرة الأيمن على قاعدة البيانات tododb. اختر Query Tool لفتح نافذة استعلام مرتبطة بهذه القاعدة. الصق أمر الإنشاء وشغّله: CREATE TABLE todo ( todo_id SERIAL PRIMARY KEY, description VARCHAR(255) NOT NULL, completed BOOLEAN DEFAULT FALSE ); بعد التنفيذ قم بتحديث (Refresh) قاعدة البيانات، وستجد الجدول قد ظهر بشكل صحيح. بالتوفيق اقتباس
0 Zen Eddin Allaham نشر الأربعاء في 15:57 الكاتب أرسل تقرير نشر الأربعاء في 15:57 import {Pool} from 'pg'; const pool = new Pool({ user: "postgres", password: 'postgres', host: 'localhost', port: 5432, database: 'tododb', }) export default pool; بدي شرح لهذا الكود مع تركيز على الكائن Pool وما بداخله جزاكم الله خيراً 1 اقتباس
0 Abdulrahman Muhammad نشر الأربعاء في 16:01 أرسل تقرير نشر الأربعاء في 16:01 بتاريخ 3 دقائق مضت قال Zen Eddin Allaham: import {Pool} from 'pg'; const pool = new Pool({ user: "postgres", password: 'postgres', host: 'localhost', port: 5432, database: 'tododb', }) export default pool; بدي شرح لهذا الكود مع تركيز على الكائن Pool وما بداخله جزاكم الله خيراً الكود مسؤول عن إنشاء اتصال بقاعدة بيانات PostgreSQL من خلال مكتبة pg في Node.js. هذا الكائن عبارة عن مجمع اتصالات (Connection Pool)، وظيفته أنه يدير مجموعة من الاتصالات بقاعدة البيانات. داخل الكائن Pool وضعنا إعدادات الاتصال بقاعدة البيانات: user: اسم المستخدم الخاص بقاعدة البيانات (هنا "postgres"). password: كلمة المرور الخاصة بالمستخدم. host: عنوان السيرفر الذي تعمل عليه قاعدة البيانات (هنا localhost يعني على نفس الجهاز). port: رقم المنفذ الذي تستمع له قاعدة بيانات PostgreSQL (افتراضياً 5432). database: اسم قاعدة البيانات التي نريد الاتصال بها (هنا "tododb"). بعدها تم إنشاء نسخة من المجمع وحفظها في pool. يتم تصديرها بـ export default pool حتى تستطيع استخدامها في أي ملف آخر وتنفّذ أوامر SQL. بالتوفيق اقتباس
0 Zen Eddin Allaham نشر الأربعاء في 17:14 الكاتب أرسل تقرير نشر الأربعاء في 17:14 import { Router } from "express"; import pool from "../db.js"; const router = Router(); // Create a new todo router.post('/' , async (req , res) =>{ try{ const {description , completed} = req.body const newTodo = await pool.query( "INSERT INTO todo (description , completed) VALUES ($1 , $2) RETURNING *",[description , completed || false]); res.json(newTodo.rows[0]) }catch(e){ res.status(500).json({message : 'Error server'}) } }); export default router; في هذا الكود اريد شرحه مع تركيز على لماذا اضفنا rows[0] وماذا يحدث اذا لم نستخدمها اقتباس
0 محمد_عاطف نشر الخميس في 09:18 أرسل تقرير نشر الخميس في 09:18 بتاريخ 15 ساعة قال Zen Eddin Allaham: const newTodo = await pool.query( "INSERT INTO todo (description , completed) VALUES ($1 , $2) RETURNING *",[description , completed || false]); إن pool.query() هذا ينفذ استعلام (SQL query) على قاعدة البيانات والإستعلام الموجود في الكود لديك يقوم ب : إضافة صف جديد إلى جدول todo. والعمود description يأخذ قيمة description المرسلة من الطلب request. والعمود completed يأخذ قيمة completed أو false إذا لم يتم إرسالها في الطلب. أما RETURNING * فمعناها بعد الإضافة نقوم بإعادة الصف الجديد كاملا. وما يعيده pool.query() هو كائن يكون فيه خاصية rows وهي Array أى مصفوفة تحتوي الصفوف التي تم إعادتها من قاعدة البيانات مثلا: newTodo.rows // سيكون شئ كالتالي [ { id: 1, description: "description", completed: false } ] ولهذا إستخدمنا rows[0] لأننا هنا قمنا بإضافة صف واحد فقط وأعدنا صف واحد من خلال RETURNING . إذا كما في المثال السابق rows ستعيد مصفوفة بها صف واحد وللحصول على هذا الصف إستخدمنا rows[0] وهو الصف الأول في المصفوفة. ولو لم نستخدم rows[0] سيتم إعادة مصفوفة كاملة بها عنصر واحد. اقتباس
السؤال
Zen Eddin Allaham
ما سبب عدم ظهور جدول todo برغم من انشائه بنجاح وحدثت قاعدة بيانات tododb اكثر من مرة ولا يظهر جدول وحدثت Table ولم يظهر جدول
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.