NodeJS

2017-09-06 15 views
8

में विशाल डेटा के साथ डेटाटेबल का उपयोग करते समय त्रुटि खोजें मेरे डेटाबेस में लगभग 5,00,000 रिकॉर्ड हैं। मैं रिकॉर्ड प्रबंधित करने के लिए एक व्यवस्थापक पैनल बनाने के लिए डेटाटेबल्स का उपयोग कर रहा हूं। मेरे पास मोंडो डीबी के साथ समर्थित नोड.जेएस है।NodeJS

मैं इस पुस्तकालय का इस्तेमाल किया है - पृष्ठ लोड पर अब तक https://www.npmjs.com/package/datatables-query

मैं सफलतापूर्वक परिणाम एक नीचे छवि में दिखाया भरी हुई है।

enter image description here

जब भी मैं खोज बॉक्स में कुछ लिखते हैं, मैं 500 त्रुटि के रूप में स्क्रीनशॉट में दिखाया गया हो।

enter image description here

क्या समस्या यहाँ हो सकता है?

क्या डेटाटेबल बड़ी मात्रा में डेटा के साथ ग्रिड दिखाने के लिए एक अच्छा विकल्प है या क्या नोड.जेएस, एक्सप्रेस और मोंगोडीबी कॉम्बो पर विचार करने का कोई बेहतर विकल्प है?

यहां मेरा सर्वर साइड कोड है।

app.post('/getUsersData',function(req, res) { 
    var Model = require('./models/user'), 
    datatablesQuery = require('datatables-query'), 
    params = req.body, 
    query = datatablesQuery(Model); 

    query.run(params).then(function (users) { 
    var data = JSON.stringify(users); 
    // var data = JSON.stringify(users); 

    res.end(data); 
    }, function (err) { 
    res.status(500).json(err); 
    }); 
}); 

मैं 3 कॉलम

1) नाम

2) ईमेल

3) पासवर्ड के साथ उपयोगकर्ता नामित MongoDB में एक टेबल

$(document).ready(function() { 
    var table = $('#datatable').DataTable({ 
    // dom: 'Bfrtip', 
    processing: true, 
    serverSide: true, 
    order: [[1, 'asc']], 
    "aoColumnDefs": [ { "sClass": "hide_me", "aTargets": [ 0 ], visible: false } ], // first column in visible columns array gets class "hide_me" 
    ajax: { 
     url: "/getUsersData", 
     type: 'POST', 
     dataSrc: "data" 
    }, 
    columns: [ 
     { data : "_id"}, 
     { data : "name" }, 
     { data : "email" }, 
     { data : "password" }, 
    ], 
    responsive: true 
    }); 
}); 
+0

यदि आपके पास विशिष्ट कॉलम (और संभावित रूप से संबंधित डेटा) हैं तो मोंगोडीबी की पसंद क्यों? (आलोचना नहीं, सिर्फ उत्सुक) – DarkMukke

+0

अधिकांश ट्यूटोरियल्स में नोडजेएस सीखते समय, शिक्षक मोंगोडीबी का उपयोग कर रहे थे, इसलिए मैं इसके साथ आगे बढ़ गया। क्या आप कोई अन्य डेटाबेस सुझाएंगे? – Anirudh

+0

यह बहुत ही विचार किए गए एस्वेरेस के साथ एक प्रश्न है, जहां आप आसानी से नो-एसक्यूएल बनाम एसक्यूएल युद्ध को स्पार्क कर सकते हैं, लेकिन कहा जाता है कि, मैं रिलेशनल डेटा के लिए पोस्ट्रेसक्ल (दोनों नोड pgsql ड्राइवर हैं) और ढीले या तैयार डेटा के लिए मोंगो का उपयोग करता हूं। यदि आप पहले से ही एसक्यूएल जानते हैं, तो मुझे यह बदलने की बात नहीं है क्योंकि आप एक नई भाषा सीखते हैं। – DarkMukke

उत्तर

4

मैं शायद बनाने होता है डेटा पर एक इंडेक्स और डेटा को खोजने के बजाय इंडेक्स को खोजें। यदि आप एक पूर्ण पाठ अनुक्रमणिका बनाते हैं तो आपको अपने संग्रह में अपने सभी कोल्स और मोंगो allows only 1 full text index per collection में संयोजन करने की आवश्यकता है।

विकल्प के रूप में, आप एडब्ल्यूएस का लचीला खोजें (जो MongoDB के साथ ठीक काम करता है) या स्फिंक्स सूचकांक पर गौर कर सकता है (PostreSQL के आधार पर)

संपादित करें: मैं इस सवाल का जवाब वास्तव में इस सवाल का जवाब नहीं है पता मामूली लेकिन मुझे डर है कि 500 ​​त्रुटि एप्लिकेशन में स्मृति समस्या नहीं है बल्कि डीबी पर है (मोंगो एसक्यूएल की तरह नहीं है, इसलिए अपने अनुप्रयोगों को एसक्यूएल में डिज़ाइन न करें)।

कुछ पठन सामग्री, यदि आप डाटाबेस संरचना बदल

http://rachbelaid.com/postgres-full-text-search-is-good-enough/
https://about.gitlab.com/2016/03/18/fast-search-using-postgresql-trigram-indexes/

+0

500 स्थिति कोड को ओपी के कोड में स्पष्ट रूप से वापस किया जा रहा है, और यह आवश्यक नहीं है कि अंतर्निहित समस्या क्या है। – rdgd

+0

मैंने यह कहा था, लेकिन कोई केवल सीमित जानकारी के साथ अनुमान लगा सकता है – DarkMukke

1

कुंजी यहाँ लगाना है वास्तव में क्या डीबी या सर्वर साइड परत पर गलत हो गया था पर योजना। त्रुटि संदेश जिसे आप अलर्ट कर रहे हैं वह डेटाटेबल्स लाइब्रेरी से एक सामान्य संदेश है जो आपको निम्न दस्तावेज पर इंगित करता है: https://datatables.net/manual/tech-notes/7

ऊपर से जुड़े दस्तावेज़ों का कहना है कि यह त्रुटि कभी भी गैर-200 प्रतिक्रिया से वापस आ जाएगी सर्वर। इस मामले में आप डेटाटाबल्स क्वेरी कॉल के त्रुटि हैंडलर/कॉलबैक में 500 त्रुटि फेंक रहे हैं, लेकिन यह आपको हमें आवश्यक जानकारी नहीं देता है!

अगले कदम, अपने ब्राउज़र की सांत्वना के नेटवर्क टैब में प्रतिक्रिया शरीर को देखने के लिए है, क्योंकि आप त्रुटि हैंडलर में बाहर err json के रूप में त्रुटि serializing और यह अपने 500 प्रतिक्रिया के साथ भेजकर या console.log लिए कर रहे हैं/अपने नोड कोड में कॉलबैक। इससे आपको वास्तव में क्या गलत हो रहा है, इसकी समझ मिल जाएगी, और उस जानकारी के साथ हम समाधान को अधिक सटीक रूप से निर्धारित कर सकते हैं। जो कुछ भी आप लॉग आउट करते हैं उसके साथ अपडेट पोस्ट करें!