MySQL запрос NodeJS, возвращающий неверный результат
Я получаю [ { 'AVG(Price)': '31000.0000' } ] вместо '31000.0000
это функция
async function getAveragePrice(year) {
const sql = await init();
const [rows] = await sql.query('SELECT AVG(Price) FROM Car where year=
?', [year], (err, result) => {
if (err) {
return null;
}
});
return rows;
}
Я использую nodejs mysql2
2 ответа
Решение
1) часть обратного вызова избыточна и 2) это ожидаемое поведение, .query(sql)
возвращается Promise<array of rows>
а row это объект, где каждому ключу соответствует имя поля
async function getAveragePrice(year) {
const db = await init();
const [rows] = await db.query('SELECT AVG(Price) as avg FROM Car where year=?', [year])
return rows[0].avg;
}
Попробуй это:
async function getAveragePrice(year) {
const sql = await init()
const row = await sql.query('SELECT AVG(Price) AS avg_price FROM Car where year=?', year, (err, result) => {
if (err) {
return null
}
return result.avg_price
})
}