본문 바로가기
MySql

MySQL nodejs 및 node-mysql로 ​​행 반환

by 베이스 공부 2021. 1. 2.
반응형

Nodejs와 node-mysql 모듈을 발견하고 있습니다. 작은 문제가 있습니다. 내가 찾은 모든 튜토리얼은 데이터베이스에서 선택하는 방법을 설명하지만 행을 반환하지 않고 항상 기록하므로 내 경우에는 절대적으로 쓸모가 없습니다.

app.js 파일이 있습니다.

// Get continents
app.get("/continents", function(request, result) {
    console.log("Continents : " + database.findAllContinents());
});

그리고 mysql.js 파일 :

exports.findAllContinents = function(connection) {
    var connection = getConnection();
    connection.query('select id, code, name from Continent', function (err, rows, fields) {
        if (err) {
            console.log("Error in findAllContinents : " + err)
        }
        return JSON.stringify(rows);
    });
    closeConnection(connection);
};

함수가 행을 반환하여 app.js 파일에서 사용하도록하려면 어떻게해야합니까? app.js 파일에 연결을 만들고 싶지 않습니다. DAO 레이어를 분리하고 싶습니다. 당신은 어떤 생각이 있습니까?

또한 누군가 ORM (sequelize, persistence.js ...) 대신 node-mysql을 사용하는 장단점에 대한 아이디어가있는 경우

감사

 

해결 방법

 

query () 는 결과를 반환 할 수없는 비동기 함수입니다. 결과적으로 비동기 함수를 호출하는 모든 함수 (예 : findAllContinents )도 마찬가지입니다.


// app.js
app.get("/continents", function(request, response) {
  database.findAllContinents(function(err, results) {
    if (err)
      throw err; // or return an error message, or something
    else
      res.send(results); // as a demo, we'll send back the results to the client;
                         // if you pass an object to 'res.send()', it will send
                         // a JSON-response.
  });
});

// mysql.js
exports.findAllContinents = function(cb) {
  var connection = getConnection();
  connection.query('select id, code, name from Continent', function (err, rows, fields) {
    // close connection first
    closeConnection(connection);
    // done: call callback with results
    cb(err, rows);
  });
};


 

참조 페이지 https://stackoverflow.com/questions/16264162

 

 

반응형

댓글