文章目录
一:数据库
1·1:什么是mongodb
mongodb 是一款非关系型数据库
优点: 速度快 成本低
缺点 没有统一的标准 没有很好的官方支持
1·2:数据库的分类
关系型数据库 :MySql Oracal SQL Server DB2
非关系型数据库: mongodb redis
1·3:mongodb和其他数据库的区别
表---->集合
字段----->文档
1·4:mongodb的安装
-
选择好安装软件的路径(安装的路径中不要有种问空格特殊符号等内容)
-
安装好之后,在bin的同级创建一个data文件夹
-
data文件夹里创建一个db文件夹
-
以管理员的身份打开cmd
-
将路径切换到安装软件的bin的路径下【cd…(退回上一级),d:进入d盘,cd 文件名:进入该文件】
-
cmd中执行: mongod.exe --install --dbpath mongodb的安装路径的db路径 --logpath mongodb的安装的data文件夹的路径\log.txt
-
cmd启动服务net start mongodb
2·1:可视化的管理工具
2·1·1:增
语法:db.集合名.insert({json})
db.demo.insert({"_id":1,"name":"xixi","age":20})
db.demo.save({"_id":1,"name":"xixi","age":20})
insert与save的区别:
nsert 在存的时候id相同就报错
save id相同就替换
2·1·2:查询
语法:
db.集合名.find() 查询全部
db.集合名.find({key:val你的条件}) 条件查询
2·1·3:修改
语法:db.集合名.update(
{key,val}你要修改的是谁你先要查询出来,
{$set:{key,val}}你要把查询出来的修改成什么
)
2·1·4:删
remove
三:node链接mongodb
3·1:mongoose
mongoose是node操纵mongodb的一个第三方库
他里面有非常便捷的数据库操纵方法 让对数据库操纵变得更简单
3·2:mongoose的使用:
第一步:npm下载
第二步:创建文件index.js和文件夹db
第三步:封装数据库
// 我是数据库连接的封装模块
// 1.引用
let mongoose=require("mongoose");
// 2.设置连接信息
//"mongodb://localhost:27017/lip"[表的信息]
mongoose.connect("mongodb://localhost:27017/lip",{ useNewUrlParser: true,useUnifiedTopology: true })
// 3.开始连接
let db=mongoose.connection;
// 4.监听连接到底是个成功还是失败
db.on('error', console.error.bind(console, 'connection error:'));
db.on("open",()=>{
console.log("数据库连接ok")
})
// 5创建数据库操纵对象 schema对象
//uname,upwd就是向数据库添加的字段名
let demoSchema=new mongoose.Schema({
uname:String,
upwd:String
})
// 6设置操纵的集合(有坑)
//在mongoose操作mongodb的时候,会默认在填写的集合名上加一个s,
//解决办法就是,在创建集合的时候,自己提前就加上s
let demomodel=mongoose.model("lips",demoSchema)
module.exports=demomodel
增:save()
let express = require("express")
let demomodel = require("../db")
let router = express.Router()
router.get("/zhuce", (req, res) => {
//使用 demomodel(是数据库连接的对象)
//给数据库存放的值
let zhucedata = new demomodel({
name: "lidaren",
age: 18
})
//开始存放数据
zhucedata.save().then((ok) => {
console.log(ok)
})
//添加操作
res.send({ msg: "你好,注册用户", data: "来注册来了" })
})
module.exports = router
删:remove()
let express=require("express");
let demomodel=require("../db")
let router=express.Router()
// 删除的接口
router.get("/shanchu",(req,res)=>{
// 数据库的删除动作
demomodel.remove(
{name:"lidaren"}
).then((ok)=>{
console.log(ok)
})
res.send({msg:"我是删除的接口"})
})
module.exports = router
改:update()
let express = require("express")
let router = express.Router()
let demomodel = require("../db")
router.get("/gengxin", (req, res) => {
demomodel.update(
{ age: 18 },
{ $set: { age: 99 } }
).then((ok) => {
console.log(ok)
})
res.send({ "text": "更新的数据" })
})
module.exports = router
查:find()
let express = require("express")
let router = express.Router()
let demomodel = require("../db")
router.get("/denglu", (req, res) => {
demomodel.find(
{ name: "lidaren", age: 18 }
).then((ok) => {
console.log(ok)
})
res.send({ msg: "你好,登录页面" })
})
module.exports = router
路由页面配置服务器
let express=require("express")
let app=express()
let dl=require("./routers/denglu")
let zc=require("./routers/zhuce")
let gx=require("./routers/updata")
let sc=require("./routers/remove")
app.use("/denglu",dl)
app.use("/zhuce",zc)
app.use("/gengxin",gx)
app.use("/shanchu",sc)
app.listen(3000)
let zc=require("./routers/zhuce")
let gx=require("./routers/updata")
let sc=require("./routers/remove")
app.use("/denglu",dl)
app.use("/zhuce",zc)
app.use("/gengxin",gx)
app.use("/shanchu",sc)
app.listen(3000)