#javascript #node.js
#javascript #node.js
Вопрос:
Моя цель — select
немедленно использовать обновленную строку promise.all()
. Я использую promise.all()
, потому что я думаю, что как я могу обойти node.js асинхронный Строка обновляется успешно, но select
оператор ничего не возвращает. Я работаю с базой данных mysql. Я буду признателен за любую помощь. Спасибо.
const query = promisify(db.query.bind(db));
Promise.all( [query("UPDATE order_detail SET tracking_number = '2323211' where order_detail_id = 81")])
.then(() => query('select * from order_detail where order_detail_id = ?', [81]))
.then(data => {
console.log(data);
})
Комментарии:
1. Зачем использовать
Promise.all
, если вы передаете только одно обещание?2. @eol Я думал, что это будет для меня способом обойти асинхронный node.js . Я также открыт для предложений. Спасибо.
3. @NaheemOlaniyan что с обходом? Вы также можете синхронизировать весь асинхронный код (однако это будет намного медленнее)
4. @Zer0 Я подумал, что я не смогу получить данные сразу после вставки в node.js . Пожалуйста, у вас есть какой-нибудь лучший способ?
Ответ №1:
Вам нужно выполнить свои операции внутри then
const query = promisify(db.query.bind(db));
Promise.all([query("UPDATE order_detail SET tracking_number = '2323211' where order_detail_id = 81")])
.then(() => {
query('select * from order_detail where order_detail_id = ?', [81]).then((data) => console.log(data))
})
Комментарии:
1. @NaheemOlaniyan теперь это должно сработать. можете ли вы проверить?
2. Я пытаюсь что-то сделать внутри
.then
afterconsole.log(data)
, но получаю сообщение об ошибке. Пожалуйста, у вас есть какие-либо предложения по исправлению этого?
Ответ №2:
promiseAll()
с .then
и async await
используя .then
:
const query = promisify(db.query.bind(db));
Promise.all([query("UPDATE order_detail SET tracking_number = '2323211' where order_detail_id = 81")])
.then(() => {
query('select * from order_detail where order_detail_id = ?', [81])
.then((data) => console.log(data));
});
Используя async
и await
:
const run = async () => {
const query = promisify(db.query.bind(db));
const resultArr = await Promise.all([query("UPDATE order_detail SET tracking_number = '2323211' where order_detail_id = 81")]);
const result = await query('select * from order_detail where order_detail_id = ?', [81]);
}
run();