반응형
MySQL 쿼리에서 결과를 반환하는 Node.js
데이터베이스에서 헥스코드를 가져오는 다음과 같은 기능이 있습니다.
function getColour(username, roomCount)
{
connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
{
if (err) throw err;
return result[0].hexcode;
});
}
문제는 콜백 기능에서 결과를 반환하는데 getColour 기능에서 아무것도 반환되지 않는다는 것입니다.getColour 함수가 다음 값을 반환하기를 원합니다.result[0].hexcode
.
getColour에 전화를 걸었을 때 아무 것도 돌려주지 않습니다.
저는 이런 걸 해봤어요.
function getColour(username, roomCount)
{
var colour = '';
connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
{
if (err) throw err;
colour = result[0].hexcode;
});
return colour;
}
물론 SELECT 쿼리는 값을 반환할 때까지 완료되었습니다.colour
콜백에 대해서만 db 쿼리 결과에 대한 처리를 수행해야 합니다.같은.
function getColour(username, roomCount, callback)
{
connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result)
{
if (err)
callback(err,null);
else
callback(null,result[0].hexcode);
});
}
//call Fn for db query with callback
getColour("yourname",4, function(err,data){
if (err) {
// error handling code goes here
console.log("ERROR : ",err);
} else {
// code to execute on data retrieval
console.log("result from db is : ",data);
}
});
이른바 '콜백 지옥'을 피하기 위해 약속을 이용하고자 한다면 다양한 접근법이 있습니다.
다음은 네이티브 약속과 표준 MySQL 패키지를 사용한 예입니다.
const mysql = require("mysql");
//left here for testing purposes, although there is only one colour in DB
const connection = mysql.createConnection({
host: "remotemysql.com",
user: "aKlLAqAfXH",
password: "PZKuFVGRQD",
database: "aKlLAqAfXH"
});
(async () => {
connection.connect();
const result = await getColour("username", 2);
console.log(result);
connection.end();
})();
function getColour(username, roomCount) {
return new Promise((resolve, reject) => {
connection.query(
"SELECT hexcode FROM colours WHERE precedence = ?",
[roomCount],
(err, result) => {
return err ? reject(err) : resolve(result[0].hexcode);
}
);
});
}
비동기 기능에서는 약속이 해결되거나 거부될 때까지 기능 실행을 일시 중지하는 대기 표현식을 사용할 수 있습니다.이런 식으로.getColour
함수는 결과가 반환되거나 쿼리 오류가 발생할 때까지 주 함수 실행을 일시 중지하는 MySQL 쿼리와의 약속을 반환합니다.
유사하지만 더 유연한 접근 방식은 MySQL 라이브러리의 약속 래퍼 패키지 또는 심지어 약속 기반 ORM을 사용하는 것일 수 있습니다.
언급URL : https://stackoverflow.com/questions/18361930/node-js-returning-result-from-mysql-query
반응형
'programing' 카테고리의 다른 글
T-SQL에 존재하는 경우 (0) | 2023.10.08 |
---|---|
PowerShell에서 배열 평탄화 (0) | 2023.10.08 |
시작 프로세스 - 관리자가 위치를 설정하지 않음으로써 작업 디렉토리 (0) | 2023.10.08 |
PTHREAD_MUTEX_ADAPTIVE_NP란 무엇입니까? (0) | 2023.10.08 |
'터치 시작' 및 '클릭' 이벤트를 바인딩하지만 둘 다에 응답하지 않는 방법은 무엇입니까? (0) | 2023.10.08 |