关于js模块化问题
- js天生不支持模块化
- require
- exports
- Node.js才有的
- 在浏览器中也可以像在Node中的模块一样来进行编程
- 无论是CommonJS、AMD、CMD、UMD、ES6 Module官方规范
- 都是为了解决js的模块化问题
- CommonJS、MD、CMD都是民间搞出来的
- ES是官方规范定义
- 官方看民间在乱搞,开发人员为了在不同的环境中使用js模块化解决方案
- 所以ES2016,ES6,其中包含了官方对js模块化的支持
package-lock文件的作用
- app.use()不仅仅是可以用来加载静态资源的和,还可以做很多工作
- 配置body-parse也是通过app.use来配置的
- 这是一个中间件,中间有一套规则
npm5以前是不会有package-lock文件的,只有npm5以后才有这个文件。,当安装包的时候,都会生成或者更新package-lock.jspom文件。
- npm5以后的版本安装包不需要加–save参数,它会自动保存依赖信息
- 当安装包的时候,会自动创建或者更新package-lock.json文件
- package-lock.json这个文件会保存node_modules中所有包的信息,(版本、下载地址)
- 这样的话chongxinnpm install的时候速度就会提升
- 从文件来看,有一个lock称之为锁
- 这个lock是用来锁定版本的,
- 如果项目依赖了1.1.1版本,如果重新install其实会下载最新版本,而不是1.1.1
- 我们的目的就是希望可以锁住1.1.1这个版本
- 所以这个package-lock.json这个文件的另外一个作用就是锁定版本,防止升级版本
find和findIndex原理
- find接受一个方法作为参数,方法内部返回一个条件
- find会遍历所有的元素,执行你给定的带有条件返回值的函数
- 符合该条件的元素会作为find方法的返回值
- 如果遍历结束还没有符合该条件的元素,则返回undefined
- 如果遍历到该元素符合条件了,就停止向下遍历
- findIndex不过是返回的元素匹配的下标,而find返回的是元素匹配的元素值
MongoDB
基本概念
- 数据库,可以有多个数据库,qq,baidu,taobao
- 集合,一个数据库中可以有多个集合users,products
- 文档,一个集合中可以有多个文档{},{},{},{}
- 文档结构很灵活,没有任何限制
- mongodb非常灵活,不需要向MySQL一样先创建数据库、表、设计表结构
- 在这里只需要:当需要插入数据的时候,只需要指定往哪个数据库的哪个集合中操作就可以了
- 一切都有mongodb帮助完成建库建表这件事
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20{
qq:{
users:[
{name:'a'},
{name:'a'},
{name:'a'},
{name:'a'}
],
products:[
],
……
},
baidu:{
},
taobao:{
}
}
关系型数据库和非关系型数据
- 表就是关系,或者说表与表之间存在关系
- 所有的关系型数据库都需要通过sql语言来操作
- 所有的关系型数据库都需要在操作之前设计表结构
- 而且数据表还支持约束
- 唯一的、主键、默认值、非空
- 非关系型数据库非常的灵活,是灵活的
- 有的非关系型数据库就是key-value对儿
- MongoDB是长得最像关系型数据库的非关系型数据库
- 数据库-》数据库
- 数据表-》集合(数组)
- 表记录-》(文档对象)
- MongoDB不需要设计表结构
- 也就是说你可以任意的往里面存数据,没有结构性这么一说
启动和关闭数据库
启动:
1 |
|
如果想要修改默认的数据存储目录
1 | mongod --dbpath=数据存储目录路径 |
停止
1 | 在开启服务的控制台,直接ctrl+c即可停止。或者直接关闭开启服务的控制台也可以 |
链接数据库
1 | mongo //该命令默认链接本机的mongoDB服务 |
退出:在链接状态输入 exit
基本命令
- show dbs
- 查看所有数据库
- db
- 查看当前操作的数据库
- use 数据库名称
- 切换到指定的数据库(如果没有会新建)
- 插入数据
在node中如何操作mongodb
使用官方mongodb包来操作
网址:https://github.com/mongodb/node-mongodb-native
使用第三放mongoose来操作mongodb数据库
第三方包:mongoose基于mongodb官方的mongodb包再做了一次包装
安装:nom i mongoose
网址:mongodbjs.com
1 | //引包 |
写在一个js文件中,该js文件是放在node_modules中的
demo案例:
1 |
|
保存数据
1 | admin.save(function(err,ret){ |
查询数据
查询所有数据
1 |
|
按条件查询数据
1 | //按照条件查询 |
删除数据
根据条件删除所有
1 | User.remove({ |
根据条件删除一个:
1 | Model.findOneAndRemove(conditions,[options],[callback]) |
根据id删除一个
1 | Model.findByIdAndRemove(id,[options],[callback]) |
更新数据
1 | User.findByIdAndUpdate('sdsd',{ |