본문 바로가기
MySql

MySQL을 사용한 Node.js 동기 쿼리

by 베이스 공부 2020. 11. 17.
반응형

작업중인 웹 사이트에 대한 사용자 등록 시스템을 만드는 중이지만 몇 가지 문제가 있습니다.

나는 콜백을 중첩하지 않으려 고 노력하고 있습니다.

내가 달성하려는 것은 다음과 같습니다.

connection.query("select 1 as email from users where email = " + connection.escape(email), function(err, rows, fields) {
    if(err) {
        var error = {
            error_message: err.code,
            error_number: err.errno
        };

        return res.send(error);
    }

    if(rows.length > 0) {
        var error = {
            message: 'Email Address is Taken',
            code: 2
        };
        return res.send(error);
    }
});

connection.query("insert into users (email, password) values ("+connection.escape(email)+", "+connection.escape(hash)+")", function(err, rows, fields) {
            if(err) {
                var error = {
                    error_message: err.code,
                    error_number: err.errno
                };

                return res.send(error);
            }
        });

내 목표는 첫 번째 쿼리를 실행하고 행을 반환하면 두 번째 쿼리를 실행하지 않고 첫 번째 쿼리가 0 행을 반환하면 두 번째 쿼리를 계속 실행하는 것입니다.

두 번째 쿼리를 첫 번째 쿼리 안에 중첩하고 if를 다른 쿼리에 넣을 수 있다는 것을 알고 있지만 그 두 쿼리가있는 동안 bcrypt를 사용하여 암호를 암호화하도록 u를 설정했기 때문에 그렇게하고 싶지 않습니다. 또한 중첩되어야합니다.

두 쿼리를 중첩 할 필요가 없도록 작성하는 방법이 있습니까? 아니면 중첩이 유일한 옵션이 될 것입니까?

 

해결 방법

 

jfriend00이 위에서 말했듯이 node.js에서 개발하려는 경우 비동기 코드 작성에 익숙해 져야합니다.

"연쇄 된 약속"이 가장 좋은 방법 일 것입니다.



추가:



 

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

 

 

반응형

댓글