首页 > 解决方案 > Nodejs MySQL查询同步?

问题描述


我需要一个带有mysql的nodejs中的select语句。在此之后,我想“console.log()”-something。

我的代码:

con.query("SELECT l.id, l.name FROM country l ORDER by l.id", function(err, land, fields)
{
     console.log(land);
});
console.log("Hello World");

我的输出:

"Hello World"
RowDataPackets

我需要这个输出:

RowDataPackets
"Hello World"

我怎样才能做到这一点?

标签: javascriptmysqlsqlnode.js

解决方案


对于顺序执行,您需要使用 async-await

你可以这样写数据库文件

        const util = require('util')
        const mysql = require('mysql')
        const pool = mysql.createPool({
          connectionLimit: 10,
          host: 'localhost',
          user: 'root',
          password: 'password',
          database: 'my_database'
        })

        // Ping database to check for common exception errors.
        pool.getConnection((err, connection) => {
          if (err) {
            if (err.code === 'PROTOCOL_CONNECTION_LOST') {
              console.error('Database connection was closed.')
            }
            if (err.code === 'ER_CON_COUNT_ERROR') {
              console.error('Database has too many connections.')
            }
            if (err.code === 'ECONNREFUSED') {
              console.error('Database connection was refused.')
            }
          }

          if (connection) connection.release()

          return
            })

            // Promisify for Node.js async/await.
            pool.query = util.promisify(pool.query)

            module.exports = pool

然后每当您可以像这样在导入后使用。

        const db= require('./database')
        route.post('/users',async function(){
              try{
                let result = await db.query('SELECT l.id, l.name FROM country 
       l ORDER by l.id');
             }catch(err){
              console.log(err);
             }
         });

了解异步等待:

了解 NodeJS 上的 async/await

https://javascript.info/async-await


推荐阅读