当前位置: 首页 > news >正文

NodeJS MongoDB⑦

文章目录

  • ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘
  • 前言
  • Node&MongoDB
  •     第一步 连接数据库
  •     第二步 创建User Mongodb模型
  •     第三步 简单使用 Mongodb命令
  •     第四步 规范使用 Mongodb命令 (RESTful架构)
  • 总结


✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘

                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   

前言

  1. Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与```PHP、Java、Python、.NET、Ruby等后端语言平起平坐。
  2. Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的JS解释,但是Node之父 Ryan Dahl在这里插入图片描述把这V8搬到了服务器上,用于做服务器的软件。

Node&MongoDB

  • 操作数据库模块 : npm install mongoose
  • Mongoose Npm : https://www.npmjs.com/package/mongoose

    第一步 连接数据库

//文件夹规范 config文件夹 → db.config.js//连接数据库 通过Require导入模块链接数据库自动链接
const mongoose = require("mongoose")const serverName = "MyDB"//插入集合和数据,数据库serverName会自动创建
mongoose.connect(`mongodb://127.0.0.1:27017/${serverName}`).then(() => {console.log("数据库连接成功!");
})

    第二步 创建User Mongodb模型

//文件夹规范 modul文件夹 → UserModul.jsconst mongoose = require("mongoose") //导入mongoose 以连接上了//限制模型数据类型
const Schema = mongoose.Schema
const UserType = {username:String,password:String,age:Number
}// 模型user 将会创建对应 users 集合
const UserModel = mongoose.model("user",new Schema(UserType))module.exports = UserModel
  1. 返回UserModel方法使用

使用如 ↓

增加数据
UserModel.create({username,userpassword
})查询数据
UserModel.find({username:"kerwin"},
["username","password"])
.sort({createTime:-1}).skip(10).limit(10)更新数据
UserModel.updateOne({_id : ?
},{introduction,username,gender,avatar
})删除数据
UserModel.deleteOne({_id})

    第三步 简单使用 Mongodb命令

客户端

<!DOCTYPE html>
<html><head><title>Login客户端</title>
</head><body><h1>mongodb的增删改查的演示</h1><div><div>用户名:<input id="username" /></div><div>密码:<input type="password" id="password" /></div><div>年龄:<input type="number" id="age" /></div><div><button id="register">注册</button></div></div><hr><div><button id="update">更新</button><button id="delete">删除</button></div><hr><table border="1"><thead><tr><td>id</td><td>用户名</td><td>年龄</td></tr></thead><tbody></tbody></table><script>var register = document.querySelector("#register")var update = document.querySelector("#update")var deletebutton = document.querySelector("#delete")var username = document.querySelector("#username")var password = document.querySelector("#password")var age = document.querySelector("#age")//注册register.onclick = () => {fetch("/api/user/add", {method: "POST",body: JSON.stringify({username: username.value,password: password.value,age: age.value}),headers: {"Content-Type": "application/json"}}).then(res => res.json()).then(res => {console.log(res)})}//更新数据update.onclick = () => {fetch("/api/user/update/?", {method: "POST",body: JSON.stringify({username: "修改的名字",password: "修改的密码",age: 1}),headers: {"Content-Type": "application/json"}}).then(res => res.json()).then(res => {console.log(res)})}//删除数据deletebutton.onclick = () => {fetch("/api/user/delete/?").then(res => res.json()).then(res => {console.log(res)})}//渲染列表fetch("/api/user/list?page=1&limit=10").then(res => res.json()).then(res => {var tbody = document.querySelector("tbody")tbody.innerHTML = res.map(item => `<tr><td>${item._id}</td>  <td>${item.username}</td>  <td>${item.age}</td>  </tr>`).join("")})</script>
</body></html>

服务器

//------用户注册接口 (插入数据)------  
app.post("/user/add",(req,res)=>{
//获取数据const {username,password,age} = req.bodyUserModel.create({username,password,age}).then(data=>{console.log(data) //成功获取的数据res.send({ //返回客户端数据ok:1})})
})//------用户修改数据接口 (更新数据)------  
app.post("/user/update/:myid", (req, res) => {const { username, password, age } = req.bodyUserModel.updateOne({ _id: req.params.myid }, {username, age, password}).then(data => {res.send({ //返回客户端数据ok: 1})})
})//------用户删除数据接口 (删除数据)------  
app.get("/user/delete/:myid", (req, res) => {UserModel.deleteOne({_id: req.params.myid}).then(data => {res.send({ //返回客户端数据ok: 1})})
})//------获取列表 (列表数据渲染)------  
router.get("/user/list", (req, res) => {const { page, limit } = req.query //获取第几页 、 多少条数据UserModel.find({}, ["username", "age"]).sort({ age: -1 }).skip((page - 1) * limit).limit(limit).then(data => {res.send(data)})
})

    第四步 规范使用 Mongodb命令 (RESTful架构)

客户端

<!DOCTYPE html>
<html><head><title>登录客户端</title>
</head><body><h1>mongodb的增删改查的演示</h1><div><div>用户名:<input id="username" /></div><div>密码:<input type="password" id="password" /></div><div>年龄:<input type="number" id="age" /></div><div><button id="register">注册</button></div></div><hr><div><button id="update">更新</but ton><button id="delete">删除</button></div><hr><table border="1"><thead><tr><td>id</td><td>用户名</td><td>年龄</td></tr></thead><tbody></tbody></table><script>var register = document.querySelector("#register")var update = document.querySelector("#update")var deletebutton = document.querySelector("#delete")var username = document.querySelector("#username")var password = document.querySelector("#password")var age = document.querySelector("#age")register.onclick = () => {fetch("/api/user", {method: "POST",body: JSON.stringify({username: username.value,password: password.value,age: age.value}),headers: {"Content-Type": "application/json"}}).then(res => res.json()).then(res => {console.log(res)})}update.onclick = () => {fetch("/api/user/?", {method: "PUT",body: JSON.stringify({username: "修改的名字",password: "修改的密码",age: 1}),headers: {"Content-Type": "application/json"}}).then(res => res.json()).then(res => {console.log(res)})}deletebutton.onclick = () => {fetch("/api/user/?", {method: "DELETE"}).then(res => res.json()).then(res => {console.log(res)})}//获取列表fetch("/api/user?page=1&limit=10").then(res => res.json()).then(res => {var tbody = document.querySelector("tbody")tbody.innerHTML = res.map(item => `<tr><td>${item._id}</td>  <td>${item.username}</td>  <td>${item.age}</td>  </tr>`).join("")})</script>
</body></html>

服务器

//相应前端的post请求-增加用户
router.post("/user", (req, res) => {const { username, password, age } = req.bodyUserModel.create({username, password, age}).then(data => {console.log(data) //成功获取的数据res.send({ //返回客户端数据ok: 1})})
})//------用户修改数据接口 (更新数据)------  
//动态路由, 获取ID
router.put("/user/:myid", (req, res) => {const { username, age, password } = req.bodyUserModel.updateOne({ _id: req.params.myid }, {username, age, password}).then(data => {res.send({//返回客户端数据ok: 1})})
})//------用户删除数据接口 (删除数据)------  
router.delete("/user/:myid", (req, res) => {UserModel.deleteOne({_id: req.params.myid}).then(data => {res.send({//返回客户端数据ok: 1})})
})//------获取列表 (列表数据渲染)------  
router.get("/user", (req, res) => {const { page, limit } = req.queryUserModel.find({}, ["username", "age"]).sort({ age: -1 }).skip((page - 1) * limit).limit(limit).then(data => {res.send(data)})
})

总结

以上是个人学习Node的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波

http://www.lryc.cn/news/92752.html

相关文章:

  • 情感分析实战(中文)-共现语义篇
  • 【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)
  • 【区块链 | L2】作为Layer2赛道的领跑者,如何理解 Arbitrum?
  • 【协议】NVMe over RoCE |nvmeof
  • 硬件设计电源系列文章-DCDC转换器布局设计
  • 「从入门到精通,一位设计师分享学习Illustrator的技巧和经验!」
  • RedisGraph的整体架构
  • C#可视化 家用轿车信息查询系统(具体做法及全部代码)
  • Nautilus Chain全球行分享会,上海站圆满举办
  • day50_mybatis
  • 第十一届“创业江苏”科技创业大赛正式启动
  • EasyX实现简易贪吃蛇
  • Linux下ElasticSearch7.9.2安装配置(包含服务器配置、启动停止脚本、开放端口和elasticsearch-head插件的使用)
  • JS 之 事件Event对象详解(属性、方法、自定义事件)
  • 65寸电视长宽多少厘米
  • Python爬取影评并进行情感分析和数据可视化
  • ubuntu22.04.2安装onlyoffice(不更改默认端口版)
  • 企业如何有效制定企业信息化发展规划?(附信息化模板)
  • 计算机网络填空题
  • 【HashMap】为什么用自定义的类做HashMap的Key时需要重写hashcode方法和equals方法
  • Flutter自定义对话框返回相关问题汇总
  • 002docker 安装
  • 软件工程师,全面思考问题很重要
  • 1.Apollo部署-linux
  • 【HTML】form标签
  • 基于SPAD / SiPM技术的激光雷达方案
  • 使用MATLAB工具模拟单/双频GPS和载波相位差分GPS
  • 当社恐成为技术面试官
  • Jetpack Compose:使用PagerIndicator和Infinity实现滚动的HorizontalPager
  • 2023年杭州/广州/东莞/深圳软考(中/高级)认证,618报名特惠