اذهب إلى المحتوى

السؤال

نشر

أنشأت علاقة واحد لأكثر بين الحصة والأستاذ وبعد إنشائي للحصة ألاحظ ظهورها في جدول الحصص لكن لاتظهر في الجدول الجديد الذي يحوي العلاقة بين الاستاذ والحصة لماذا ؟؟

ملف الحصة 


import Sequelize from 'sequelize';
const room =(sequelize,DataTypes)=>{
    const Room =sequelize.define('room',{
     Numberofroom:{
         type:DataTypes.STRING,
     },
    NameOfroom:{
        type:DataTypes.STRING,
    },
    QrCode:{
        type:DataTypes.STRING,
        unique:true,
    },
    date:{
        type:DataTypes.DATE,
    }
    
    });
    Room.associate = (models) => {
        Room.belongsToMany(models.User, { through: "ListClass" });
        Room.belongsTo(models.Profile,{foreignKey: 'Lista'});
      };
   
          return Room;
      }
    export default room;

ملف المستخدم من نوع أستاذ

import Sequelize from 'sequelize';

const profile=(sequelize,DataTypes)=>{
 const Profile = sequelize.define('profile',{
  phone:{
   type:DataTypes.INTEGER,
  },
  university:{
      type:DataTypes.STRING,
  },
country:{
    type:DataTypes.STRING
}


});
Profile.associate=models=>{
    Profile.belongsTo(models.User);
    Profile.hasMany(models.Room,{foreignKey: 'Lista'});
}

return Profile;

}

export default profile;

 

lista.PNG

Recommended Posts

  • 0
نشر
بتاريخ 3 ساعات قال شرف الدين2:

هل يمكنك إرفاق صورة توضح أسامي الجداول الموجودة لديك كلها؟

بعض الجدوال لاأعمل بها 

جربت طريقة ثانية في ربط علاقة one to many بين النموذج profile وroom لكن لايظهر لي المعرف الخاص بprofile في النموذج room

Profile.hasMany(models.Room);

        Room.belongsTo(models.Profile)

posgres.PNG

  • 0
نشر
بتاريخ 4 دقائق مضت قال Mohamed Lamin Mahmoudi:

بعض الجدوال لاأعمل بها 

جربت طريقة ثانية في ربط علاقة one to many بين النموذج profile وroom لكن لايظهر لي المعرف الخاص بprofile في النموذج room

Profile.hasMany(models.Room);

        Room.belongsTo(models.Profile)

 

لقد قمت بإنشاء علاقة واحد إلى كثير بين room و profile وظهر مفتاح العلاقة في الجدول room لأن الطبيعي أن مفتاح العلاقة يظهر في جدول الواحد ولا يظهر في جدول الكثير
ومن ثم قمت بإنشاء علاقة كثير إلى كثير بين الجدولين Room و users وقد تم إنشاء جدول ثالث ليحتوي العلاقة وقمت بتسميته بListClass

وأرى في الصورة أن كل شئ يعمل بشكلٍ سليم , تقول أن الجدول الجديد الذي يحمل العلاقة بين user و Room لا يظهر فيه العلاقة , فهل يمكنك تصوير الجدول من الداخل؟

  • 0
نشر
بتاريخ 6 دقائق مضت قال شرف الدين2:

لقد قمت بإنشاء علاقة واحد إلى كثير بين room و profile وظهر مفتاح العلاقة في الجدول room لأن الطبيعي أن مفتاح العلاقة يظهر في جدول الواحد ولا يظهر في جدول الكثير
ومن ثم قمت بإنشاء علاقة كثير إلى كثير بين الجدولين Room و users وقد تم إنشاء جدول ثالث ليحتوي العلاقة وقمت بتسميته بListClass

وأرى في الصورة أن كل شئ يعمل بشكلٍ سليم , تقول أن الجدول الجديد الذي يحمل العلاقة بين user و Room لا يظهر فيه العلاقة , فهل يمكنك تصوير الجدول من الداخل؟

قلت أن الجدول الذي يحمل العلاقة one to many بين المستخدم من نوع أستاذ وهو profile و Room والتي هي الحصص لاتظهر في الجدول أي خواص للعلاقة بينهم  لأنني جربت إضافة حصة وتمت الاضافة بنجاح لكن لايظهر أي شئ في جدول العلاقة بين الحصة ومن أنشئها 

lista.PNG

  • 0
نشر
بتاريخ 3 دقائق مضت قال Mohamed Lamin Mahmoudi:

قلت أن الجدول الذي يحمل العلاقة one to many بين المستخدم من نوع أستاذ وهو profile و Room والتي هي الحصص لاتظهر في الجدول أي خواص للعلاقة بينهم  لأنني جربت إضافة حصة وتمت الاضافة بنجاح لكن لايظهر أي شئ في جدول العلاقة بين الحصة ومن أنشئها 

 

 الجدول الذي يحمل العلاقة بينهما ليس جدول lista وإنما هو نفسه جدول الrooms وهذا لأنها علاقة واحد إلى كثير, وفي علاقة الواحد إلى كثير يكون جدول الكثير هو الذي يحمل مفتاح العلاقة , لذا أرجو إزالة الخاصية foreignKey من العلاقة وإعادة إنشاء قاعدة البيانات ستلاحظة إنشاء جدول rooms يحمل بداخله مفتاح يُشير إلى الأستاذ الموجود في تلك الحصة

  • 0
نشر
بتاريخ 14 دقائق مضت قال شرف الدين2:

 الجدول الذي يحمل العلاقة بينهما ليس جدول lista وإنما هو نفسه جدول الrooms وهذا لأنها علاقة واحد إلى كثير, وفي علاقة الواحد إلى كثير يكون جدول الكثير هو الذي يحمل مفتاح العلاقة , لذا أرجو إزالة الخاصية foreignKey من العلاقة وإعادة إنشاء قاعدة البيانات ستلاحظة إنشاء جدول rooms يحمل بداخله مفتاح يُشير إلى الأستاذ الموجود في تلك الحصة

لم يظهر جدول جديد بقي نفس الجدول القديم باسم rooms وله خصائص الحصة فقط ولم يضاف له معرف الاستاذ الذي أنشئ الحصة 

room.PNG

backend.rar

  • 0
نشر
بتاريخ 27 دقائق مضت قال Mohamed Lamin Mahmoudi:

لم يظهر جدول جديد بقي نفس الجدول القديم باسم rooms وله خصائص الحصة فقط ولم يضاف له معرف الاستاذ الذي أنشئ الحصة 

 

backend.rar

أرجو فتح ملف index.js والذهاب إلى السطر رقم 6 وكتابته على الشكل التالي 

sequelize.sync({force:true})

حيث أن الخاصية {force:true} ستقوم بمسح البيانات الموجودة في قاعدة البيانات وإعادة بناؤها مرة أخرى حتى يتم بناؤها بالعلاقة الصحيحة بين الحصة والمدرس, بعد أن تقوم بتشغيل الخادم ستلاحظ ظهور العلاقة في قاعدة البيانات في الجدول room حيث سيظهر لك الحقل الجديد profileId , بعد ذاك يمكنك مسح الخاصية force:true مرة أخرى حتى لا يتم مسح البيانات في كل مرة يتم تشغيل الخادم فيها

بالتوفيق

  • 0
نشر
بتاريخ 53 دقائق مضت قال شرف الدين2:

أرجو فتح ملف index.js والذهاب إلى السطر رقم 6 وكتابته على الشكل التالي 


sequelize.sync({force:true})

حيث أن الخاصية {force:true} ستقوم بمسح البيانات الموجودة في قاعدة البيانات وإعادة بناؤها مرة أخرى حتى يتم بناؤها بالعلاقة الصحيحة بين الحصة والمدرس, بعد أن تقوم بتشغيل الخادم ستلاحظ ظهور العلاقة في قاعدة البيانات في الجدول room حيث سيظهر لك الحقل الجديد profileId , بعد ذاك يمكنك مسح الخاصية force:true مرة أخرى حتى لا يتم مسح البيانات في كل مرة يتم تشغيل الخادم فيها

بالتوفيق

لماذا تظهر قيمة null على معرف منشئ الحصة ؟؟

Capture.PNG

  • 0
نشر
بتاريخ 5 دقائق مضت قال شرف الدين2:

هل يمكنك أن ترينا الطريقة التي قمت بإدخال البيانات بها ؟ لأنه من الواضح أنك لم تدخل منشئ الحصة عند إنشاؤها

export const creatRoom = async(req,res)=>{
     const { profileId, Numberofroom,NameOfroom,QrCode,date}=req.body;
try{
    const room = await models.Room.create({
            NameOfroom,
            Numberofroom,
            QrCode,
            date,
            profileId

    });
    res.status(200).json({message:'تم إنشاء  الحصة  بنجاح '});
}
catch(e){
    res.status(500).json(e);
    console.log(e);
}

 };

أرسلت المعرف من الخادم للعميل مع رمز الدخول 

 "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwibmFtZSI6ImFobWVkIiwiZW1haWwiOiJhaG1lZEBnbWFpbC5jb20iLCJpYXQiOjE2NTQ1OTMwNzZ9.cDDzmn15IebsLFLkERjUepIfGF4qPRhJmHUCYnnmz-w",

    "userType": "teacher",

    "userId": 4

}

في جهة العميل خزنت المعرف في AsyncStorage عند تسجيل الدخول  ومن ثم أردت إرساله مع بيانات الحصة 

const  _singpRoom=()=>{
    
    (async()=>{
     
      const { Numberofroom, NameOfroom, date, QrCodevalue}=formData;
      const profileId =await AsyncStorage.getItem('userId');
      const QrCode=QrCodevalue;
      const body={
        Numberofroom,
        NameOfroom,
            date,
            QrCode,
            profileId
           
      }  
     try{
             const token =await AsyncStorage.getItem('AccessToken');
             axios.defaults.headers.common.Authorization =`JWT ${token}`;
             const response=   axios.post(CREATEROOM_URL,body);   
             console.log(body);
             setFormData({
              NameOfroom:'',
                Numberofroom:'',
                date:'',
                QrCode:''
               
             });
                 props.navigation.navigate('ListRoom');
          }catch(e){
           
            
          }
  })();
  }

 

id.PNG

  • 0
نشر
بتاريخ 8 دقائق مضت قال Mohamed Lamin Mahmoudi:

أرسلت المعرف من الخادم للعميل مع رمز الدخول 

 "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NCwibmFtZSI6ImFobWVkIiwiZW1haWwiOiJhaG1lZEBnbWFpbC5jb20iLCJpYXQiOjE2NTQ1OTMwNzZ9.cDDzmn15IebsLFLkERjUepIfGF4qPRhJmHUCYnnmz-w",

    "userType": "teacher",

    "userId": 4

}

في جهة العميل خزنت المعرف في AsyncStorage عند تسجيل الدخول  ومن ثم أردت إرساله مع بيانات الحصة 

 

 

هل يمكنك طباعة profileId حتى نتأكد أنه تم إرساله بصورة صحيحة عبر تعديل الشفرة البرمجية لدالة craeteRoom لجعلها كالتالي 

export const creatRoom = async(req,res)=>{
     const { profileId, Numberofroom,NameOfroom,QrCode,date}=req.body;
try{
  console.log(profileId);
    const room = await models.Room.create({
            NameOfroom,
            Numberofroom,
            QrCode,
            date,
            profileId

    });
    res.status(200).json({message:'تم إنشاء  الحصة  بنجاح '});
}
catch(e){
    res.status(500).json(e);
    console.log(e);
}

 };

أرجو بعد الطباعة أن ترينا لقطة شاشة لناتج الطباعة

  • 0
نشر
بتاريخ 5 دقائق مضت قال شرف الدين2:

هل يمكنك طباعة profileId حتى نتأكد أنه تم إرساله بصورة صحيحة عبر تعديل الشفرة البرمجية لدالة craeteRoom لجعلها كالتالي 


export const creatRoom = async(req,res)=>{
     const { profileId, Numberofroom,NameOfroom,QrCode,date}=req.body;
try{
  console.log(profileId);
    const room = await models.Room.create({
            NameOfroom,
            Numberofroom,
            QrCode,
            date,
            profileId

    });
    res.status(200).json({message:'تم إنشاء  الحصة  بنجاح '});
}
catch(e){
    res.status(500).json(e);
    console.log(e);
}

 };

أرجو بعد الطباعة أن ترينا لقطة شاشة لناتج الطباعة

نعم يتم  إرساله بشكل صحيح

id.PNG

  • 0
نشر
بتاريخ 21 دقائق مضت قال شرف الدين2:

محمد أرجو طباعة الprofileId بداخل الدالة createRoom وليس طباعة userId

في جهة التطبيق يظهر لي أن id قيمته null 

وفي الخادم يظهر الخطأ 500

id.PNG

post.PNG

بتاريخ 17 دقائق مضت قال Mohamed Lamin Mahmoudi:

في جهة التطبيق يظهر لي أن id قيمته null 

وفي الخادم يظهر الخطأ 500

id.PNG

post.PNG

المشكلة من جهة التطبيق لأني جربت في postman وتم إنشاء الحصة بنجاح وظهر معرف منشئ الحصة في الجدول 

mobile.rar

  • 0
نشر

المشكل أني عندما أسجل الدخول وأخزن المعرف  وأطبعه  يتم طباعته بشكل صحيح 

هنا

const _SignIn=()=>{
(async()=>{
    if (!validate())return;
    setLoading(true);
    try{    
const response= await axios.post(SIGNIN_URL,{email,password});
         
  setLoading(false);
  setEmail('');
  setPassword('');
  AsyncStorage.setItem('accessToken',response.data.accessToken);
 
  const userType = response.data.userType;
 
  AsyncStorage.setItem('userId',response.data.userId);
  console.log(userId);

  if(userType==='student') {
          props.navigation.navigate('Student');
  }
  else  props.navigation.navigate('TeacherPage');
    }catch(e){
setLoading(false);
setAlert({messages:e.response.data.message,type:'danger'});
    }
})();
}

لكن عندما أستورده هنا في ملف إنشاء حصة يتم طباعته بقيمة null لماذا ؟؟

const  _singpRoom=()=>{
    
    (async()=>{
     
      const { Numberofroom, NameOfroom, date, QrCodevalue}=formData;
      const profileId =await AsyncStorage.getItem('userId');
      const QrCode=QrCodevalue;
      const body={
        Numberofroom,
        NameOfroom,
            date,
            QrCode,
            profileId
      }  
     try{
             const token =await AsyncStorage.getItem('AccessToken');
             axios.defaults.headers.common.Authorization =`JWT ${token}`;
             const response=   axios.post(CREATEROOM_URL,body);   
             console.log(body);
             setFormData({
              NameOfroom:'',
                Numberofroom:'',
                date:'',
                QrCode:''
               
             });
                 props.navigation.navigate('ListRoom');
          }catch(e){
           
          }
  })();
  }

 

  • 0
نشر
بتاريخ 22 ساعات قال Mohamed Lamin Mahmoudi:

في جهة التطبيق يظهر لي أن id قيمته null 

وفي الخادم يظهر الخطأ 500

 

 

المشكلة من جهة التطبيق لأني جربت في postman وتم إنشاء الحصة بنجاح وظهر معرف منشئ الحصة في الجدول 

mobile.rar

محمد ارسل ملفات المشروع كاملًا لان تلك الملفات ناقصة

  • 0
نشر
بتاريخ 22 ساعات قال Mohamed Lamin Mahmoudi:

في جهة التطبيق يظهر لي أن id قيمته null 

وفي الخادم يظهر الخطأ 500

id.PNG

post.PNG

المشكلة من جهة التطبيق لأني جربت في postman وتم إنشاء الحصة بنجاح وظهر معرف منشئ الحصة في الجدول 

 

بتاريخ 15 دقائق مضت قال شرف الدين2:

محمد ارسل ملفات المشروع كاملًا لان تلك الملفات ناقصة

 

mobile.rar

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...