const getArchive = (req, callback) => {
connection.query(selectQuery, function (selectErr, userRows) {
if (userRows.length > 0) {
return callback(JSON.parse(JSON.stringify(userRows[0])));
} else {
return callback(false);
}
})
}
connection.query를 통해 userRows에 어떤 결과를 받아 온다.
하지만 그 결과값을 return했을 때 console.log()를 찍어 보면, 데이터가 return되지 않고 undefined를 출력한다.
근데 위 코드처럼 callback을 리턴하면 이 값을 받아낼 수 있다.
JSON.함수를 쓴 이유
sql에서 query에서 나오는 값은 JSON값인데, 이 JSON은 키를 통해 값을 부를 수가 없다...
때문에 JSON.stringify()를 통해 먼저 String 객체로 변환시켜준 후, JSON.parse()를 통해 다시 JSON을 만든다?
. . . ?
아니 이 코드 짤 때는 분명 값 출력이 안 돼서 이렇게 해놓고 넘겼는데,
이제보니 이거 뭔가 이상하네. JSON.parse(JSON.stringify())는 결국 다시 JSON으로 돌리는 과정인데.
지우고 userRows[0]만 callback으로 보내도 코드가 잘 돈다. !!!???
그래서 JSON 함수를 다 지워버렸다. 이렇게 또 하나 배워 갑니다..
어쨌든, 그래서
exports.functionName = (req, res) => {
getArchive(req.body, function(results) {
if (results) {
res.send(200);
}
});
}
이런식으로, 실제 사용할 곳에서 getArchive 함수에 2번째 인자로 function을 써주면,
callback의 return이 results에 담겨서 오게 되고 나는 이 값을 사용할 수 있게 된다!
'main > Node.js' 카테고리의 다른 글
[Node] API 통신용 포트에도 SSL 적용시키기 (0) | 2022.02.04 |
---|---|
[React | Next.js | Node.js] TOAST UI Editor 이미지 업로드 (0) | 2022.01.10 |
[Node] 회원가입 시 이메일 발송하기 - 구글 계정으로 nodemailer 사용 (0) | 2021.08.25 |
[Node] path, __dirname 사용하기 / ReferenceError: path is not defined ERROR (0) | 2021.07.27 |