में नेस्टेड बैकटिक्स (`) के साथ टेम्पलेट अक्षर, मैं ईएस 6 में एक टेम्पलेट शाब्दिक (बहु-लाइन स्ट्रिंग) कैसे लिख सकता हूं जिसमें बैकटिक्स (`) और अपने आप में (i.e नेस्टेड बैकटिक्स) शामिल हो सकते हैं।ईएस 6
उदा:
var query = `
UPDATE packet
SET
`association` = "3485435",
`tagname` = "associated"
`
कारण मैं इसे की जरूरत है:
यह ऊपर मेरी कोड उदाहरण में स्पष्ट है।
मैं node-mysql क्वेरी Strings
के रूप में बनाने की कोशिश कर रहा हूं और उन्हें mySQL पर पास करने के लिए एक चर में संग्रहीत कर रहा हूं। MySQL क्वेरी सिंटैक्स को UPDATE
-स्टाइल प्रश्नों के लिए बैकटिक्स की आवश्यकता है।
एक ही रास्ता मैं उन्हें साफ सुथरा दिखेगा हो सकता है, टेम्पलेट शाब्दिक का उपयोग करना है नियमित एकल लाइन तार का उपयोग कर अन्यथा प्रश्नों थोड़ा भयंकर कारण वे अंत जा रहा है देखने के लिए बहुत, बहुत लंबे कुछ मामलों है।
मैं
\n
का उपयोग करके लाइनों को समाप्त करना नहीं चाहता क्योंकि यह बोझिल है।
मेरा वृत्ति एसक्यूएल प्रश्नों के निर्माण के लिए उपयोग किए जाने वाले सादे टेम्पलेट तारों के विचार से आतंक के साथ प्रतिक्रिया करना है, लेकिन मुझे लगता है कि आपके पास वास्तव में आपके उदाहरण में कोई चर नहीं है, इसलिए अभी तक कोई जोखिम नहीं है। कृपया वैरिएबल इंटरपोलेशन जोड़ने के बारे में बहुत सावधान रहें (यानी नहीं), जब तक कि आप टेम्पलेट टैग फ़ंक्शन का उपयोग विशेष रूप से उन प्रश्नों के निर्माण के लिए नहीं कर रहे हैं जो प्रासंगिक ऑटोस्केपिंग कर रहे हैं। –
@ जेरेमीबैंक्स एचएम, क्या यह एक एसक्यूएल-इंजेक्शन-एस्क्यू चिंता है? यदि ऐसा है तो मैं अपने एपीआई के माध्यम से आने वाले प्रत्येक पैरामीटर के लिए 'connection.escape()' का उपयोग कर रहा हूं जो इससे संबंधित है। मैं [नोड-माइस्क्ल ड्राइवर] का उपयोग कर रहा हूं (https: // github।com/felixge/node-mysql) जिसमें यह विधि शामिल है। –
हाँ, यह मेरी चिंता है। 'Connnection.escape()' जैसे कुछ का उपयोग करके सुरक्षित कोड लिखना संभव है, लेकिन इससे संभावना है कि आप एक पैरामीटर को याद करेंगे (या बचने के लिए केवल एक उलझन में, या कुछ हटा दिया गया है)। सामान्य प्रवृत्ति किसी भी चीज़ से दूर है जिसे * कभी * मैन्युअल से बचने की आवश्यकता होती है, और स्पष्ट रूप से क्वेरी अभिव्यक्तियों के लिए मूल्य प्रदान करने के लिए डीबी-प्रदत्त एपीआई का उपयोग करने की आवश्यकता होती है। ऐसा लगता है कि 'नोड-माइस्क्ल' सॉर्ट-इन आपको '?' को क्वेरी में मानों के लिए प्लेसहोल्डर के रूप में रखने के सामान्य दृष्टिकोण का उपयोग करता है, और मान को सरणी के रूप में पास करता है। मेरा सुझाव है कि, मुद्दों के बावजूद। –