最近在用Node.js编写一个后端逻辑,里面涉及到Mysql的联表查询(即用一个表的查询结果去查另一个表),这时就需要多层回调函数嵌套。那么问题就来了,多层回调函数嵌套就会产生“回调地狱”的问题,代码结构非常难看,而Promise和async就是为了解决“回调地狱”而产生的解决方案。我选择了Promise,但是在代码结构方面遇到了一些问题,最后经过大佬的指点解决了,特此记录。
首先要安装mysql模块(在已安装Mysql的前提下):
npm install -s mysql
然后执行(这里是我犯的错误,正确代码在后面):
/*
注意这是一段错误的代码
*/
const mysql = require('mysql');
// 建立连接
let connection = mysql.createConnection({
host: '127.0.0.1', // 数据库地址
port: '3306', // 数据库端口
user: 'root', // 用户名
password: '', // 密码
database: '' // 数据库名称
});
// Promise异步执行
let prom = Promise.resolve();
prom.then(function () {
// 执行查询
connection.query('SELECT * FROM users_table;', (e, result) => { // 这里users_table是我的表名,请读者自行替换
console.log('Search complete!');