Mysql NodeJ同步查询

时间:2019-01-10 16:00:40

标签: mysql node.js

谢谢您的回答

我做到了:我使用了“ sync-mysql”:

但是现在非常慢...

也许我可以使用Mysql NPM做同样的代码 您是否知道我要使用异步函数并执行以下相同操作时代码的外观?这将对我有很大帮助:)

我几乎完成了我的项目,只剩下这个功能了

     const  customer_booked = []
  customer_booked[0] = []
  customer_booked[1] = []

  let sql = "SELECT *  " +
      "FROM customer as C " +
      "WHERE customer_reference REGEXP '^[c]i*' "
  if (filters[0].value.length){
      sql += "AND C.customer_name LIKE '%" + filters[0].value + "%' "
  }

  if (filters[3].value.length){
      sql += "LIMIT " + filters[3].value
  }

  var result = connection.query(sql);
  const customers = [];


  const booked = connection.query('SELECT cr.customer_id, a.codeAgent ' +
      'FROM customer_reservation as cr ' +
      'INNER JOIN agent as a ' +
      'ON a.id = cr.agent_id')

  booked.forEach(customer_booking => {
      customer_booked[0].push(customer_booking.customer_id)
      customer_booked[1].push(customer_booking.codeAgent)
  });

  result.forEach( customer => {
      var months;

      let d1 = new Date(customer.last_order);

      let d2 = new Date();

      months = (d2.getFullYear() - d1.getFullYear()) * 12;
      months -= d1.getMonth() + 1;
      months += d2.getMonth();

      months = months <= 0 ? 0 : months;

      if (customer_booked[0].includes(customer.customer_id)){
          let code_agent_index = customer_booked[0].indexOf(customer.customer_id)
          customer.available = 'booked'
          customer._rowVariant = 'warning'
          customer.agent_code = customer_booked[1][code_agent_index]
      }
      else if (months >= 12){
          customer.available = 'available'
          customer._rowVariant = 'success'
      } else {
          customer.available = 'notAvailable'
          customer._rowVariant = 'danger'
      }

       let sql2 = "SELECT * " +
           "FROM customer_addresses AS CA " +
           "WHERE CA.customer_id = " + customer.id

      customer.addresses = connection.query(sql2)
      customers.push(customer);
      //customers[customers.length].push()




  })

  callback(false, result)

1 个答案:

答案 0 :(得分:2)

您可以使用async/await使用node.js IIFE,如下所示:

(async() => {
  const users = await getUsers();

  for(const user of users){
    user.addresses = await getAddresses(user.id);
    // your other code just translated to JS.
  }

  return users;
})()

因此,主要思想是await您的异步代码。
例如,我们使用IIFE(立即调用函数表达式)来访问所需的async/await并进行测试。
在实际代码中,您应该使用关键字async

命名函数

这里有不错的教程,可以解释如何使用异步/等待12