Node.js学习笔记【六】
2021/8/7 20:08:12
本文主要是介绍Node.js学习笔记【六】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
NoSQL简介
NoSQL是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL数据库的分类
- 列存储(HBase):按列进行存储,属于比较高级的数据库
- 文档存储(MongoDB):按JSON来存储
- Key-value存储(Redis):通常用于缓存也可以实现消息通信
- 图存储(FlockDB)
- 对象存储(db4o)
- XML存储(BaseX)
使用NoSQL的好处
- 简单(没有原子性、一致性、隔离性等复杂规范)
- 便于横向拓展(横向拓展:横向增加服务器数量来增加计算能力以及存储容量)
- 适合超大规模数据的存储
- 很灵活地存储复杂结构的数据(Schema Free)
MongoDB简介
MongoDB一词来自于英文单词“Humongous”,中文含义为“庞大”,MongoDB是面向文档存储
的开源数据库,MongoDB由C++编写而成,但是支持各种编程语言。
MongoDB好处
- 性能好(利用内存计算的优势)
- 支持大规模数据存储(它的可拓展性好)
- 可靠安全(MongoDB有本地复制、自动故障转移等自带的功能)
- 方便存储复杂数据结构(Schema Free)
MongoDB下载
可以在MongoDB官网下载,支持常见平台(Windows、Linux、OSX)
云MongoDB
把MongoDB安装在服务器(服务商提供的服务器)上,可以支持更大规模数据存储,也比较安全。
- 阿里云、腾讯云(收费):比较适合在生产环境使用
- MongoDB官方的MongoDB Atlas(收费+免费)
云数据库——MongoDB Atlas
在MongoDB官网注册用户
然后在Atlas创建集群
添加数据库用户
设置IP地址白名单
获取连接地址
用Mongoose连接MongoDB
- 安装Mongoose
npm i mongoose --save
- 用Mongoose连接MongoDB
创建config.js配置连接字符串
module.exports = { connectionStr:'mongodb://root:<password>@zhihu-shard-00-00.htx1s.mongodb.net:27017,zhihu-shard-00-01.htx1s.mongodb.net:27017,zhihu-shard-00-02.htx1s.mongodb.net:27017/myFirstDatabase?ssl=true&replicaSet=atlas-t4dg3c-shard-0&authSource=admin&retryWrites=true&w=majority' }
在index.js中引用使用
const mongoose = require('mongoose') const {connectionStr} = require('./config'); //接收的第一个参数就是之前在网站生成好的连接字符串 mongoose.connect(connectionStr,{useUnifiedTopology: true,useNewUrlParser: true},()=>{ console.log('MongoDB 连接成功了!'); }) //监听错误方法,打印错误信息 mongoose.connection.on('error',console.error);
运行成功~
设计用户模块的Schema
操作步骤:
- 分析用户模块的属性
- 编写用户模块的Schema
- 使用Schema生成用户Model
新建models->users.js编写用户模块的Schema:
const mongoose = require('mongoose'); //mongoose提供的Schema类生成文档Schema const { Schema,model } = mongoose const userSchema = new Schema({ //required表示这个属性是必选的 //default可以设置默认值 name:{type:String,required:true}, }); //建立模型 //User:为文档集合名称 module.exports = model('User',userSchema);
用MongoDB实现用户的增删改查
操作步骤
- 用Mongoose实现增删改查接口
- 用Postman测试增删改查接口
来到controllers->users.js将之前写的内存数据库改为真实的模型
const User = require('../models/users');
引入模型后就可以使用它的方法实现增删改查啦
const User = require('../models/users');
创建用户:
//创建用户 async create(ctx){ //校验请求体的name位字符串类型并且是必选的 ctx.verifyParams({ //必选:required 删掉也是默认为true name:{ type:'string',required:true }, }); const user = await new User(ctx.request.body).save(); ctx.body = user; }
查看用户:
//获取用户列表 async find(ctx){ ctx.body = await User.find(); }
查看特定用户:
//获取特定用户 async findById(ctx){ const user = await User.findById(ctx.params.id); //用户不存在 if(!user){ ctx.throw(404,'用户不存在');} ctx.body = user; }
修改用户:
//更新用户 async update(ctx){ ctx.verifyParams({ //必选:required 删掉也是默认为true name:{ type:'string',required:true }, }); const user = await User.findByIdAndUpdate(ctx.params.id,ctx.request.body); if(!user){ctx.throw(404,'用户不存在');} ctx.body = user; }
删除用户:
//删除用户 async delete(ctx){ const user = await User.findByIdAndRemove(ctx.params.id); if(!user){ctx.throw(404,'用户不存在');} ctx.status = 204 }
这篇关于Node.js学习笔记【六】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15useCallback教程:React Hook入门与实践
- 2024-11-15React中使用useContext开发:初学者指南
- 2024-11-15拖拽排序js案例详解:新手入门教程
- 2024-11-15React中的自定义Hooks案例详解
- 2024-11-14受控组件项目实战:从零开始打造你的第一个React项目
- 2024-11-14React中useEffect开发入门教程
- 2024-11-14React中的useMemo教程:从入门到实践
- 2024-11-14useReducer开发入门教程:轻松掌握React中的useReducer
- 2024-11-14useRef开发入门教程:轻松掌握React中的useRef用法
- 2024-11-14useState开发:React中的状态管理入门教程