#javascript #express
#javascript #экспресс
Вопрос:
Это самый простой маршрут, который я использую:
router.get('/:date', async (req, res) => {
let tracks = []
let query = 'SELECT * from `tracks` where `playlistDate` = '' req.params.date '''
let result = await pool.query(query)
console.log(result)
})
Я знаю, что это само по себе не сработает, но что мне нужно сделать, чтобы иметь возможность использовать await для функции запроса, подобной этой?
Это пул с измененными учетными данными и addr.
var pool = mysql.createPool({
poolLimit : 10,
host : 'HOST',
user : 'USER',
password : 'PASS',
database : 'DB'
});
Комментарии:
1.
pool.query
возвращает ли метод обещание? если это так, ваш код верен2. @Laif Где
pool
определено? Пожалуйста, опубликуйте больше контекста.3. используете ли вы npm mysql для узла?
4. вы должны проверить документы в используемой вами библиотеке, в mysql one наверняка есть много примеров, и это очень распространенная библиотека для использования, поэтому вы найдете 100 учебных пособий.. ваш код открыт для внедрения SQL, он должен использовать
playlistDate = ?
и передавать его в качестве параметра. смотрите Документы, в которых будут примеры.5. это действительно зависит от используемой вами библиотеки… mysql2 вы бы использовали
await pool.query(query).promise()
, например
Ответ №1:
Возможно, эта логика поможет. Это зависит от того, как вы его структурировали.
var pool = mysql.createPool({
poolLimit : 10,
host : 'HOST',
user : 'USER',
password : 'PASS',
database : 'DB'
});
const getTracks = (date) => {
return new Promise((resolve, reject) => {
let query = 'SELECT * FROM tracks WHERE playlistDate = ?'
pool.query(query, [date], (err, res) => {
if (err) {
reject(err);
return;
}
resolve(res);
})
})
};
router.get('/:date', async (req, res) => {
try {
let tracks = await getTracks(req.params.date);
return res.status(200).json(tracks);
} catch (err) {
return res.status(400).json(err);
}
})