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

كيفية تخزين مصفوفة باستخدام mongoose وقرائتها من جيكويري jQuery من صفحة HTML

Samer Alashqar

السؤال

السلام عليكم..

اريد ان اخزن مصفوفة في mongoDB لكن عندما اضع log يتم ارجاع undefined ..

ajax :

$('#add-product').submit(function(e) {
    e.preventDefault()

    var proClassification = $('.selectpicker').val();

    //returns ['جميع المنتجات', 'عروضنا']
    console.log(proClassification)
    
    
        $.ajax({
        type: 'POST',
        url: `${serverAddress}/product/add`,
    data: {proClassification:proClassification },
        success: (res) => {
            alert('success');
    },
        error: (er) => {
            alert('err');
        }
    })

})

mongoose modules :

const mongoose = require('mongoose');


const productSchema = new mongoose.Schema({

    proClassification:{
        type:[String]
    },

});



module.exports = mongoose.model('Product', productSchema);

controller:

exports.addProduct = (req,res) => {
    const {proClassification} = req.body;
    

    

    const product = new Product ({
        proClassification,
    });


    product.save().then(product => {
        res.status(201).json(product);
    }).catch(error => {
        console.log(error)
        res.status(500).send(error);
    });
}

 

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 6 دقائق مضت قال Samer Alashqar:

نعم تصل لكن يتم الرد ب undefined ..

عند تجربتي سابقا بتخزين المصفوفة باستخدام jquery serializearray  يتم تخزينها لكن لا اريد ان استخدم serializearray هل هناك طريقة افضل ؟

إن طريقةاستقبال رد 201 تختلف عن 200 هل يمكنك تجريب رد حالة 200

أين تقرأ الرد ب undefined?

serializearray ضرورية لأن اي شيء يتم تمثيله كسلسلة نصية لنستطيع وضعه في قاعدة البيانات، فهي لاتقبل تخزين كائنات برمجية مباشرة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

على الأغلب المشكلة في استخدام جيكويري، طالما أنه لدينا أكثر من عنصر، يتوجب المرور عليهم بحلقة ثم قراءة كل منهم.

إما نستخدم حلقة each

let proClassification  = [];

$.each($(".selectpicker"), function(){            
  proClassification.push($(this).val());
});

console.log(proClassification);

أو map

var proClassification = $('.selectpicker').map(function() {
  return $(this).attr('value');
}).toArray();

console.log(proClassification);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 15 دقائق مضت قال Wael Aljamal:

على الأغلب المشكلة في استخدام جيكويري، طالما أنه لدينا أكثر من عنصر، يتوجب المرور عليهم بحلقة ثم قراءة كل منهم.

إما نستخدم حلقة each


let proClassification  = [];

$.each($(".selectpicker"), function(){            
  proClassification.push($(this).val());
});

console.log(proClassification);

أو map


var proClassification = $('.selectpicker').map(function() {
  return $(this).attr('value');
}).toArray();

console.log(proClassification);

 

قمت بالتجربة بالفعل لكن المشكلة في server-side حيث انه لايقوم بتخزينها و انما يرد ب مصفوفة فارغة ..

تم التعديل في بواسطة Samer Alashqar
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 دقيقة مضت قال Samer Alashqar:

قمت بالتجربة بالفعل لكن المشكلة في server-side حيث انه لايقوم بتخزينها و انما يرد ب undefined 

حاول طباعة proClassification ضمن الدالة add product و اخبرنا بما يظهر. وادتأكد هل الطلبة تصل لهذا المتحكم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 دقائق مضت قال Wael Aljamal:

حاول طباعة proClassification ضمن الدالة add product و اخبرنا بما يظهر. وادتأكد هل الطلبة تصل لهذا المتحكم.

نعم تصل لكن يتم الرد ب undefined ..

عند تجربتي سابقا بتخزين المصفوفة باستخدام jquery serializearray  يتم تخزينها لكن لا اريد ان استخدم serializearray هل هناك طريقة افضل ؟

تم التعديل في بواسطة Samer Alashqar
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
exports.addProduct = (req,res) => {
    
    var proClassification = req.body.proClassification;

       //returns undefined
    console.log(proClassification)

    
    

    const product = new Product ({
        proClassification,
    });


    product.save().then(product => {
        res.status(200).json(product);
    }).catch(error => {
        console.log(error)
        res.status(500).send(error);
    });
}

قمت بتجربة الرد ب 200 لكن نفس المشكلة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 15 دقائق مضت قال Samer Alashqar:

exports.addProduct = (req,res) => {
    
    var proClassification = req.body.proClassification;

       //returns undefined
    console.log(proClassification)

    
    

    const product = new Product ({
        proClassification,
    });


    product.save().then(product => {
        res.status(200).json(product);
    }).catch(error => {
        console.log(error)
        res.status(500).send(error);
    });
}

قمت بتجربة الرد ب 200 لكن نفس المشكلة 

أرجو مراجعة التعليق السابق بما يتعلق ب serializearray

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...