NoSQL是对不同于传统的关系型数据库的数据库管理系统的统称。
MongoDB一词来自于英文单词“Humongous”,中文含义为“庞大”,MongoDB是面向文档存储
的开源数据库,MongoDB由C++编写而成,但是支持各种编程语言。
可以在MongoDB官网下载,支持常见平台(Windows、Linux、OSX)
把MongoDB安装在服务器(服务商提供的服务器)上,可以支持更大规模数据存储,也比较安全。
在MongoDB官网注册用户
然后在Atlas创建集群
添加数据库用户
设置IP地址白名单
获取连接地址
npm i mongoose --save
创建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);
运行成功~
操作步骤:
新建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);
操作步骤
来到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 }