Node——five①

- Node操作Mysql数据库

首先进入到服务界面
在这里插入图片描述
启动MySQL
在这里插入图片描述
在项目文件中 配置package.json文件以及安装mysql
在这里插入图片描述
在Navicat for MySQL可视化软件中,连接本地数据库 并新建库以及表单数据
在这里插入图片描述
在这里插入图片描述
启动js文件

connection.query('SELECT * FROM `users`', function (error, results, fields) {
	if (error) throw error;
		console.log('The solution is: ', results);
});

在这里插入图片描述
因为还没有数据插入 显示为空 证明成功

插入数据 运行

connection.query('INSERT INTO users VALUES(NULL, "admin", "123456")', function (error, 	results, fields) {
		if (error) throw error;
			console.log('The solution is: ', results);
});

在这里插入图片描述
接着查询

connection.query('SELECT * FROM `users`', function (error, results, fields) {
	if (error) throw error;
	console.log('The solution is: ', results);
});

在这里插入图片描述

增删改查


connection.query('直接在这里写sql语句', function (error, results, fields) {
	if (error) throw error;
	console.log('The solution is: ', results);
});

- 获取回调

  • 一种数据类型
  • 参数
  • 返回值
  • 函数太灵活了,无所不能
  • 一般情况下,把函数作为参数的目的就是为了获取函数内部的异步操作结果
  • JavaScript 单线程、事件循环
function add(x, y) {
    return x + y
}

// add(10, 20)
// console.log(1)

// // 不会等待
// setTimeout(function () {
// console.log(2)
// console.log('hello')
// }, 0)

// console.log(3)

function add(x, y, callback) {
    console.log(1)
    setTimeout(function () {
        var ret = x + y
        callback(ret)
    }, 1000)
}

add(10, 20, function (ret) {
    console.log(ret)
})

// 注意:凡是需要得到一个函数内部异步操作的结果
// setTimeout
// readFile
// writeFile
// ajax
// 这种情况必须通过:回调函数

- 封装ajax方法

<script>
        // setTimeout
        // readFile
        // wirteFile
        // readdir
        // ajax
        // 往往异步 API 都伴随有一个回调函数
        // var ret = fn()
        // $.get('dsadas', fucntion () {})
        // var ret = $.get()

        function get(url, callback) {
            var oReq = new XMLHttpRequest()
            // 当请求加载成功之后要调用指定的函数
            oReq.onload = function () {
                // 我现在需要得到这里的 oReq.responseText
                callback(oReq.responseText)
            }
            oReq.open("get", url, true)
            oReq.send()
        }

        get('data.json', function (data) {
            console.log(data)
        })
    </script>

- 无法保证顺序的代码(promise)

var fs = require('fs')

//异步代码 不一定按顺序执行
fs.readFile('./data/a.txt', 'utf8', function (err, data) {
    if (err) {
        //return console.log('读取失败')
        //抛出异常
        // 阻止程序的执行
        // 把错误消息打印到控制台
        throw err
    }
    console.log(data)
})
fs.readFile('./data/b.txt', 'utf8', function (err, data) {
    if (err) {
        //return console.log('读取失败')
        //抛出异常
        // 阻止程序的执行
        // 把错误消息打印到控制台
        throw err
    }
    console.log(data)
})
fs.readFile('./data/c.txt', 'utf8', function (err, data) {
    if (err) {
        //return console.log('读取失败')
        //抛出异常
        // 阻止程序的执行
        // 把错误消息打印到控制台
        throw err
    }
    console.log(data)
})

- callback hell

嵌套 一定按照顺序进行执行

var fs = require('fs')
//异步代码 不一定按顺序执行
fs.readFile('./data/a.txt', 'utf8', function (err, data) {
    if (err) {
        //return console.log('读取失败')
        //抛出异常
        // 阻止程序的执行
        // 把错误消息打印到控制台
        throw err
    }
    console.log(data)
    fs.readFile('./data/b.txt', 'utf8', function (err, data) {
        if (err) {
            //return console.log('读取失败')
            //抛出异常
            // 阻止程序的执行
            // 把错误消息打印到控制台
            throw err
        }
        console.log(data)
        fs.readFile('./data/c.txt', 'utf8', function (err, data) {
            if (err) {
                //return console.log('读取失败')
                //抛出异常
                // 阻止程序的执行
                // 把错误消息打印到控制台
                throw err
            }
            console.log(data)
        })
    })
})

嵌套调用

var fs = require('fs')

console.log(1)

new Promise(function () {
    console.log(2)
    fs.readFile('./data/a.txt', 'utf8', function (err, data) {
        if (err) {
            console.log(err)
        } else {
            console.log(3)
            console.log(data)
        }
    })
})
console.log(4)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Zjaun/article/details/87529317