Вложенные запросы в npm mysql node js - PullRequest
0 голосов
/ 06 мая 2020

Вызов вложенного запроса. Мне нужно вызвать 2 запроса за один вызов API в node js. Я использую библиотеку npm mysql. 1-й запрос выполняется, а 2-й - нет. Как запустить оба запроса один за другим?

router.delete("/:id", async (req, res) => {
  conn.query(
    "Delete FROM assignedcourses WHERE CourseID = ?",
    req.params.id,
    async (err, results) => {
      if (err) throw err;
      conn.query(
        "Delete FROM courses WHERE CourseID = ?",
        req.params.id,
        async (err, results) => {
          res.send(results);
        }
      );
    }
  );
});

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете запускать команды «параллельно» с обещаниями. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

router.delete("/:id", (req, res) => {  
  Promise.all([
    new Promise((resolve, reject) => {
      
      // execute query
      conn.query("Delete FROM assignedcourses WHERE CourseID = ?", req.params.id, (err, result) => {
        
          if(err){
            return reject(err);
          }
        
        // query done
        resolve(result);
        
      });
      
      
    }),
    new Promise((resolve, reject) => {
      
      // execute query
      conn.query("Delete FROM courses WHERE CourseID = ?",  req.params.id, (err, results) => {
                 
          if(err){
            return reject(err);
          }
        
        // query done
        resolve(result);
        
      });
      
    }),
  ]).then((results) => {
    
    // do something with both results
    res.send(results);
    
  }).catch((err) => {
    
    // handle query errors here
    res.status(500).end(err.message);
    
  });  
});

Ключевое слово async не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...