javascript - store如何查询Mysql

标签 javascript mysql node.js express ejs

我将使用不同的 Id 值来获取我的数据库两次。但我需要将这两个查询保存在某处,然后将它们发送到 res.render。我已经尝试保存在数组中,但它返回未定义。

app.post('/searchInventory', urlencodedParser, function(req, res){
        con.query("SELECT id FROM products WHERE name LIKE '%" + req.body.keyword + "%'", function(err, result){
            data = [];
            for(var a = 0; a < result.length; a++){
                console.log(a);
                con.query("SELECT products.id AS id, products.name AS name, products.price AS price, SUM(enter.quantity) AS quantity FROM products JOIN enter ON products.id = enter.id_prod WHERE enter.id_prod = "+mysql.escape(result[a].id)+";", function(err, results, fields){
                // I need to store the query from here
                data =+ results
                });
            }
            console.log(data); //Undefined
            res.render('inventory', {results: results});
        });
    })

最佳答案

问题是关于需要注意的异步数据库查询。 首先,您可以做的是创建一个查询 promise ,让它变得简单易读。

function dbQueryPromise(query) {
  return new Promise((resolve, reject) => {
    con.query(query, (err, results) => {
      if(err) return reject(err);
      resolve(results);
    })
  })
}

现在您可以使用这个 promise 来处理您需要的行为:

dbQueryPromise("SELECT id FROM products WHERE name LIKE '%" + req.body.keyword + "%'")
  .then(results => {
   const promiseArray = results.map(result => {
     return dbQueryPromise("SELECT products.id AS id, products.name AS name, products.price AS price, SUM(enter.quantity) AS quantity FROM products JOIN enter ON products.id = enter.id_prod WHERE enter.id_prod = "+mysql.escape(result.id)+";")
   })
   Promise.all(promiseArray).then(allResults => { res.render('inventory', { results: allResults})})
})

关于javascript - store如何查询Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54994566/

相关文章:

javascript - 涉及 Promise 的队列异步操作

javascript - 如何只为当前用户公开字段?

当textarea的内容时Javascript编辑iframe

mysql - 如何在没有 'id' 列的 MySql 中获取最后插入的记录?

javascript - 如何操纵 `shell.which()` 返回的内容?

javascript - 如何使用包含Web Storage类型的字符串值在JS/JQuery中调用Web Storage API函数?

mysql - 如何使sql语句显示在两个日期之间?

php - MySQL 查询的语法错误

node.js - npm UNMET PEER DEPENDENCY 错误,无法安装 Braintree

javascript - 如何使用 Firebase 上传多个文件?