使用node操作MySQL数据库
安装:npm install --save mysql
新建
1 | //0 、引包 |
总结
- mongodb数据库
- 数据存储结构
- 数据表
- 集合(表)
- 文档(表记录)
- mongodb 官方有一个mongodb的包用来操作mongodb数据库
- 比较原始,使用比较麻烦,一半不用该包
- mongoose
- 真正公司进行开发,使用的是mongoose第三方包
- 提高开发效率
- 掌握使用mongodb对数据集合进行基本的CRUD
- 使用node操作mysql数据库
回调地狱 callback hell
throw error
抛出异常:
两个作用:
1、阻止程序的执行
2、把错误信息打印到控制台
对于异步编程会出现的问题:
异步指的是不一定会按照程序代码的顺序进行执行,而是根据操作系统的调度行和文件大小以及一些偶然性决定的,所以是不一定按照编写顺序来的
例如:
1 | var fs = require('fs'); |
即以上文件的读取顺序不一定是a.txt b.txt c.txt的顺序来进行读取的
解决以上办法就是通过回调嵌套的方式来保证顺序
例如:
1 | var fs = require('fs'); |
不停在内部进行嵌套,但是当回调的程序多了以后,就会不停的嵌套,形成回调地狱。一个任务依赖一个异步任务以后,就把该任务写到异步任务里面,形成回调关系。问题就是嵌套太深,代码很丑,不易维护,阅读困难
Promise
为了解决回调地狱嵌套,所以在ES6中新增了一个API:Promise
可以把Promise看作是一个容器,容器中存放了一个异步任务,该异步任务包括三种状态,pending(默认状态),resolved(成功)、rejected(失败)。pending指向这俩个状态,并且每次只能变成一种,单向的,只能从pending–>resolved或者pending–>rejected。
- Promise是一个构造函数
- Promise本身不是异步,但它里面的任务是异步的,即内部往往都是封装一个异步任务
基本语法
1 | var fs = require('fs'); |
嵌套解决
1 | var fs = require('fs'); |
封装Promise版本的readFile
1 | var fs = require('fs'); |
Promise和数据库操作
所有数据库操作都是异步的
~
//用户注册
//1、判断用户是否存在,如果已存在,结束注册,否则注册(保存一条用户信息)
User.findOne({
username:’admin’
})
.then(function(user){
if(user){
//用户已存在,不能注册
console.log(‘用户已存在’)
} else {
//用户不存在,可以注册
return new User({
username:’aaa’,
paaword:’123’,
email:’sas’
})
}
})
.then (function(ret){
})