Как я могу вернуть объект вместо массива? - PullRequest
0 голосов
/ 18 марта 2020

Я пытался вернуть 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"
    }
]

Ответы [ 2 ]

1 голос
/ 18 марта 2020

По умолчанию запрос возвращает массив строк, отраженных запросом выбора. Так как ваш запрос имеет единственный результат, он возвращается как массив одиночного объекта пользователю.

Вы можете изменить его на

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

Пожалуйста, дайте нам знать, если получилось лучше.

1 голос
/ 18 марта 2020

Просто получите первый элемент массива перед преобразованием json:

res.status(200).json(rows[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...