Asyn c Nodejs подключение к базе данных - PullRequest
1 голос
/ 14 марта 2020

Я хочу, чтобы запрос базы данных был выполнен до того, как командная строка перейдет к следующим строкам для выполнения.

Вот выдержка из моего кода:

const express = require('express');
const bodyparser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyparser())
var pool = mysql.createPool(
    {
        connectionLimit:40,
        host: <>
        user:<>,
        password: <>,
        database:<>
    }
)

console.log("First Print Command")

let sql = "select * FROM pinfo" 
   pool.getConnection((err,conn1)=>
   {
        if(true)
       {
           conn1.query(sql,(err1,results)=>
           {
               conn1.release()

              console.log("Second print command")

           });
       }
   })

   console.log("Third print command")

const port  = 3001;
app.listen(port, () => {
    console.log('Server is running at port '+port);
  });


Это вывод, который я получаю

First Print Command
Third print command
Server is running at port 3001
Second print command

Я хочу, чтобы команда печати выполнялась по порядку и я изучил асин c и обещания, но не смог понять синтаксис, поскольку он всегда пропускал команду, было бы полезно, если бы вы могли предоставить выдержку из синтаксиса.

1 Ответ

2 голосов
/ 14 марта 2020

вы можете подождать, пока запрос завершится, и напечатать третий оператор, например,

const express = require('express');
const bodyparser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyparser())
var pool = mysql.createPool(
    {
        connectionLimit: 40,
        host,
        user,
        password,
        database,
    }
);

console.log("First Print Command");

async function queryDB() {
    let sql = "select * FROM pinfo";
    return new Promise(function (resolve, reject) {
        pool.getConnection((err, conn1) => {
            if (true) {
                conn1.query(sql, (err1, results) => {
                    conn1.release()
                    console.log("Second print command")
                    resolve(results)
                });
            }
        })
    });
}

async function main() {
    let results = await queryDB();
    console.log("Third print command");
    const port = 3001;
    app.listen(port, () => {
        console.log('Server is running at port ' + port);
    });
}

main();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...