利用 node.js 和 MongoDB 编写一个简单的增删改接口 demo

打印 上一主题 下一主题

主题 1887|帖子 1887|积分 5661

媒介


   Mongoose 是一个在 Node.js 环境中操纵 MongoDB 数据库的工具库。它提供了一种在 Node.js 中进行数据库操纵的简单、直观、异步的方式,可以用来界说数据模子、实行查询、更新和删除操纵,以及进行数据验证等功能。通过 Mongoose,开发者可以更方便地操纵 MongoDB 数据库,提高开发服从。
  一、环境准备

确保已安装:


  • Node.js (≥ 14.x)
  • MongoDB (≥ 4.x)
初始化项目并安装依赖:
  1. mkdir node-mongo-demo
  2. cd node-mongo-demo
  3. npm init -y
  4. npm install express mongoose dotenv
复制代码
二、项目结构

node-mongo-demo/
  1. ├── .env
  2. ├── db/
  3. │   └── connect.js
  4. ├── models/
  5. │   └── BannerModel.js
  6. ├── routes/
  7. │   └── server.js
  8. ├── app.js
  9. └── package.json
复制代码
三、环境变量

创建 .env 文件(用于环境变量):
  1. MONGODB_URI= mongodb://localhost:1818/demo
  2. PORT=3000
复制代码
四、毗连数据库

在 db/connect.js 中毗连 MongoDB 数据库:
3.1. connect.js 文件

  1. const express = require('express');
  2. const mongoose = require('mongoose');
  3. require('dotenv').config();
  4. const app = express();
  5. app.use(express.json()); // 解析 JSON 请求体
  6. // 连接 MongoDB
  7. mongoose.connect(process.env.MONGODB_URI)
  8.   .then(() => console.log('MongoDB 已连接'))
  9.   .catch(err => console.error('MongoDB 连接错误:', err));
  10. // 路由
  11. app.use('/items', require('./routes/items'));
  12. // 启动服务器
  13. app.listen(process.env.PORT, () => {
  14.   console.log(`服务端口: ${process.env.PORT}`);
  15. });
复制代码
五、界说数据模子

在 models/BannerModel.js 中界说数据模子:
界说了一个名为 BannerSchema 的模式(Schema),它包罗了五个字段:imgPath、url 、 name 、 description 和 price。字段被界说为 字符串 和 数值 类型,可以设置 必填 的(required: true)。可以设置默认值 (default: ‘’)。可以设置数值最小值 (min: 0)。
然后,您利用这个模式创建了一个 Mongoose 模子(model),命名为 Banner。这个模子可以用来创建、查询、更新和删除 MongoDB 中的 Banner 集合(Collection)。
末了,您将这个模子赋值给了 module.exports,这样其他文件就可以通过 require 引用这个模子,并利用它与 MongoDB 交互。
5.1. BannerModel.js 文件

  1. const mongoose = require('mongoose');
  2. const Schema = mongoose.Schema;
  3. let BannerSchema = new Schema({
  4.   imgPath: { type: String, required: true },
  5.   url: { type: String, required: true },
  6.   name: { type: String, required: true },
  7.   description: { type: String, default: '' },
  8.   price: { type: Number, min: 0 }
  9. });
  10. let model = mongoose.model('Banner', BannerSchema);
  11. module.exports = model;
复制代码
六、实现 server 接口

6.1. server.js 文件

  1. const express= require('express');
  2. const router= require('router');
  3. const Banner= require('../db/BannerModel.js');
  4. // 获取 banner 数据
  5. router.get('./getBanner',( req,res)=>{
  6.      console.log('getBanner')
  7.      Banner.find().then((data)=>{
  8.           res.send({err:0,msg:'查询ok',data:data})
  9.      }).catch((err)=>{
  10.           res.send({err:-1,msg:'查询不成功'})
  11.      })
  12. })
  13. // 删除 banner
  14. router.post('./delBanner',( req, res )=>{
  15.      console.log('gdelBanner')
  16. })
  17. // 新增 banner 数据
  18. router.post('./addBanner',( req, res)=>{
  19.         console.log(req.body)
  20.     let {imgPath,url,name}= req.body
  21.     Banner.insertMany({imgPath,url,name}).then((data)=>{
  22.          res.send({ err:0,msg:'添加成功' })
  23.     }).catch((err)=>{
  24.          res.send({ err:-1,msg:'添加失败' })
  25.     })     
  26. })
  27. // 修改 banner 数据
  28. router.post('./updateBanner',( req, res)=>{
  29.      Banner.update( {_id:id}, {imgPath,url,name} )
  30.      console.log('getBanner')
  31. })
  32. module.exports = router;
复制代码
七、服务文件

在 app.js 中毗连 MongoDB:
7.1. app.js 文件

  1. const express= require('express');
  2. const path= require('path');
  3. const app= express()
  4. const db= require('./src/db/connect.js')
  5. //post配置
  6. var bodyParser= require('body-parser')
  7. app.use(bodyParser.json())
  8. app.use(bodyParser.urlencoded({ extended:false }))
  9. //配置静态目录
  10. app.use(express.static( path.json( __diename,'./atatic' )))
  11. //路由相关
  12. const server= require('./src/routes/server.js')
  13. app.use('./server', server)
  14. app.listen(3000,()=> {
  15.     console.log('服务器启动')
  16. })
复制代码
八、感谢

如果以为有效欢迎点赞关注收藏。
有问题私信我!!~~


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表