完成mysql回调函数

完成mysql回调函数,mysql,node.js,Mysql,Node.js,我怎样才能完成mysql回调函数,而不让它转到下一行呢 连接文件: var mysql = require("mysql"); var connection = mysql.createPool(//database details); function logIn(name, password) { connection.getConnection(function(err, connection) { connection.query("

我怎样才能完成mysql回调函数,而不让它转到下一行呢 连接文件:

var mysql = require("mysql");

var connection = mysql.createPool(//database details);
function logIn(name, password) {
    connection.getConnection(function(err, connection) {
        connection.query("SELECT * FROM //database where name=\"" + name + "\" AND password=\"" + password + "\"", function(err, data) {
            console.log("model:" + data); 
            return data;
        }
});

exports.logIn = logIn;
查看文件:

var express = require("express");
var bodyParser = require("body-parser");
var model = require(//model file);

var router = express.Router();

router.post("//url", function (req, res, next) {
    var name = req.body.name;
    var password = req.body.password;
    var data = model.logIn(name, password);
    console.log("main:" + data);
});

module.exports = router;
控制台显示:

主:未定义


model:[对象对象]

您可以从
登录
功能返回承诺:

function logIn(name, password) {
  return new Promise(((resolve) => {
    connection.getConnection(function(err, connection) {
      connection.query("SELECT * FROM //database where name=\"" + name + "\" AND password=\"" + password + "\"", function(err, data) {
        console.log("model:" + data);
        resolve(data);
      })
    })
  }))
}
等待它在路由处理程序中的解析:

router.post("//url", async function (req, res, next) {
  var name = req.body.name;
  var password = req.body.password;
  var data = await model.logIn(name, password);
  console.log("main:" + data);
});