मैं एक JSON ऑब्जेक्ट वापस करने का प्रयास कर रहा था, लेकिन इसके बजाय यह एक सरणी देता है। मैं क्वेरी के लिए प्राथमिक कुंजी का उपयोग कर रहा हूं इसलिए मुझे यकीन है कि मुझे केवल एक परिणाम मिलेगा।

यह मेरा दृष्टिकोण है:

router.get("/student_info/:id", (req, res, next) => {
    connection.getConnection((error, currentConnection) => {
        if (!!error) {
            console.log("Error occurred while connecting db")
        } else {
            let id = req.params.id;
            currentConnection.query("SELECT * FROM students WHERE id=" + "'" + id + "'", (error, rows, fields) => {
                if (!!error) {
                    console.log(error.message)
                } else {
                    res.status(200).json(rows);
                }
                currentConnection.release();
            });
        }
    });
});

मैं जो चाहता हूं वह यह है:

    {
        "id": "171-15-8966",
        "name": "Alif Hasnain",
        "course_code": "CSE412,CSE413"
    }

लेकिन मुझे इस तरह का परिणाम मिलता है:

[
    {
        "id": "171-15-8966",
        "name": "Alif Hasnain",
        "course_code": "CSE412,CSE413"
    }
]
0
Alif Hasnain 18 मार्च 2020, 16:14

3 जवाब

जेसन परिवर्तन से पहले सरणी का पहला तत्व प्राप्त करें:

res.status(200).json(rows[0]);
1
GMB 18 मार्च 2020, 16:17

डिफ़ॉल्ट क्वेरी द्वारा चुनिंदा क्वेरी द्वारा प्रतिबिंबित पंक्तियों की सरणी लौटाती है। चूंकि आपकी क्वेरी का एकल परिणाम है, यह उपयोगकर्ता को एकल ऑब्जेक्ट की सरणी के रूप में लौटाता है।

आप इसे बदल सकते हैं

res.status(200).json(rows[0]);

कृपया हमें बताएं कि क्या बेहतर वैकल्पिक मिला है।

1
Prakhar Patidar 18 मार्च 2020, 16:20

नेस्टेड सरणी विनाशकारी का उपयोग करके इसे आजमाएं

res.status(200).json([[rows]]);

ES6 - विनाश के बारे में अधिक जानने के लिए आप इस ब्लॉग को पढ़ सकते हैं

ES6 - विनाश को समझना

0
Paulo Biscocho 11 नवम्बर 2021, 20:02