2017-11-15 1 views
1

Express에 express와 mysqljs를 사용하고 있습니다. 사용자를 추가하기 위해 데이터베이스를 요청하면 콜백 함수를 정의해야합니다. 응답을 처리합니다. 불행히도 나는 콜백 함수에서 res.send를 표현할 수있는 권한이 없다. res.send 메소드에 insertID를 보내고 싶다. 어떻게해야 하는가?. 여기 내 코드가있다.콜백 함수에서 express response를 사용하는 방법 (예 : nodejs의 mysqljs에서 사용)

app.post("/adduser", (req, res) => { 
    const con = mysql.createConnection({ 
    host: "localhost", 
    user: "root", 
    password: "", 
    database: "customer" 
    }); 
    const name = req.body.name; 
    const age = req.body.age; 

const users = { name: name, age: age }; 
    const query = "INSERT INTO users SET ?"; 
    con.query(query, users, (err, res) => { 
    if (err) throw err; 
    console.log("Last insert ID:", res.insertId); 
    // want to send res.insertId to server 
    // res.send() here 
    }); 

}); 
+0

res.send (res.insertId); ? –

+1

'response'와 'result'모두 동일한 변수 이름 'res'를 사용하고있는 것 같습니다. – naota

+0

@UsmanRana도 작동하지 않음 – Nikhil

답변

0

'응답'과 '결과'에 동일한 변수 이름 'res'가 사용 된 것 같습니다.

설명서에 따르면 con.query는 'res'가 아닌 'result'를 반환합니다. https://github.com/mysqljs/mysql#performing-queries

app.post("/adduser", (req, res) => { 
    const con = mysql.createConnection({ 
      host: "localhost", 
      user: "root", 
      password: "", 
      database: "customer" 
    }); 
    const name = req.body.name; 
    const age = req.body.age; 

    const users = { name: name, age: age }; 
    const query = "INSERT INTO users SET ?"; 
    con.query(query, users, (err, result) => { 
     if (err) throw err; 
     console.log("Last insert ID:", result.insertId); 
     // want to send result.insertId to server 
     // res.send() here 

     // res.send(result.insertId); // gives an error 
     res.send(result.insertId.toString()); 
    }); 

}); 
+0

위의 단계를 수행하면 명료하게 폐기 된 res.send (상태)가 사용됩니다. res.sendStatus (상태) 오류 – Nikhil

+0

@ Niikhil을 사용합니다. 어때 res.send (result.insertId.toString()); ? – naota

+0

res.send ({id : result.insertId})를 시도하고 toString()도 정상적으로 작동합니다. Thnx (도움 요청) – Nikhil

관련 문제