为了账号安全,请及时绑定邮箱和手机立即绑定

变量不保留值

变量不保留值

四季花海 2021-09-30 09:32:37
我试图将一个变量设置为从查询获得的结果,但该变量没有保留该值。var queryString = "SELECT price FROM menu_items WHERE id = " +     req.query.items + ";";mysql.pool.query(queryString, function(err, rows, fields){    if (err){        next(err);        return;    }    itemPrice = rows[0].price;    console.log("item price is2: " + itemPrice);});console.log("item price is: " + itemPrice);我希望它打印"item price is2: 10.99"然后"item price is 10.99"但它打印项目价格是undefined然后item price is2: 10.99
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

var queryString = "SELECT price FROM menu_items WHERE id = " + 

    req.query.items + ";";

mysql.pool.query(queryString, function(err, rows, fields){

    if (err){

        next(err);

        return;

    }

    itemPrice = rows[0].price;

    console.log("item price is2: " + itemPrice);

    console.log("item price is: " + itemPrice);

});

任何网络调用都是异步运行的,因此一旦进行了 db 调用,下一行就开始执行。


使用异步等待


const {promisify} = require('util');

(async ()=> {

    var queryString = "SELECT price FROM menu_items WHERE id = " + 

        req.query.items + ";";

        const query = promisify( mysql.pool.query).bind(mysql.pool);

        const result = await query(queryString)

            if (!result) {

                next(result);

                return;

            }

            console.log(result)

            itemPrice = result[0].price;

            console.log("item price is2: " + itemPrice);

            console.log("item price is: " + itemPrice);

})()


查看完整回答
反对 回复 2021-09-30
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

you can do it using following method


export const getPriceValue = async () => {


var queryString = "SELECT price FROM menu_items WHERE id = " + 

    req.query.items + ";";

mysql.pool.query(queryString, function(err, rows, fields){

    if (err){       

        return 0;

    }

    if(row) {

      return(rows[0].price);

    }


});

}

let priceValue = await getPriceValue();

console.log('price::', priceValue);


查看完整回答
反对 回复 2021-09-30
?
BIG阳

TA贡献1859条经验 获得超6个赞

var queryString = "SELECT price FROM menu_items WHERE id = " + 

    req.query.items + ";";

mysql.pool.query(queryString, function(err, rows, fields){

    if (err){

        next(err);

        return;

    }

    itemPrice = rows[0].price;

    console.log("item price is2: " + itemPrice);

    console.log("item price is: " + itemPrice);

});


查看完整回答
反对 回复 2021-09-30
  • 3 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信