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

السؤال

نشر (معدل)

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

اريد ان اخزن مصفوفة في 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...