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

文章目录

前言


Mongoose 是一个在 Node.js 环境中操作 MongoDB 数据库的工具库。它提供了一种在 Node.js 中进行数据库操作的简单、直观、异步的方式,可以用来定义数据模型、执行查询、更新和删除操作,以及进行数据验证等功能。通过 Mongoose,开发者可以更方便地操作 MongoDB 数据库,提高开发效率。

一、环境准备

确保已安装:

  • Node.js (≥ 14.x)
  • MongoDB (≥ 4.x)

初始化项目并安装依赖:

js 复制代码
mkdir node-mongo-demo
cd node-mongo-demo
npm init -y
npm install express mongoose dotenv

二、项目结构

node-mongo-demo/

js 复制代码
├── .env
├── db/
│   └── connect.js
├── models/
│   └── BannerModel.js
├── routes/
│   └── server.js
├── app.js
└── package.json

三、环境变量

创建 .env 文件(用于环境变量):

js 复制代码
MONGODB_URI= mongodb://localhost:1818/demo
PORT=3000

四、连接数据库

在 db/connect.js 中连接 MongoDB 数据库:

3.1. connect.js 文件

js 复制代码
const express = require('express');
const mongoose = require('mongoose');
require('dotenv').config();

const app = express();
app.use(express.json()); // 解析 JSON 请求体

// 连接 MongoDB
mongoose.connect(process.env.MONGODB_URI)
  .then(() => console.log('MongoDB 已连接'))
  .catch(err => console.error('MongoDB 连接错误:', err));

// 路由
app.use('/items', require('./routes/items'));

// 启动服务器
app.listen(process.env.PORT, () => {
  console.log(`服务端口: ${process.env.PORT}`);
});

五、定义数据模型

在 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 文件

js 复制代码
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let BannerSchema = new Schema({
  imgPath: { type: String, required: true },
  url: { type: String, required: true },
  name: { type: String, required: true },
  description: { type: String, default: '' },
  price: { type: Number, min: 0 }
});

let model = mongoose.model('Banner', BannerSchema);
module.exports = model;

六、实现 server 接口

6.1. server.js 文件

js 复制代码
const express= require('express');
const router= require('router');
const Banner= require('../db/BannerModel.js');

// 获取 banner 数据
router.get('./getBanner',( req,res)=>{
     console.log('getBanner')
     Banner.find().then((data)=>{
          res.send({err:0,msg:'查询ok',data:data})
     }).catch((err)=>{
          res.send({err:-1,msg:'查询不成功'})
     }) 
})

// 删除 banner
router.post('./delBanner',( req, res )=>{
     console.log('gdelBanner')
})

// 新增 banner 数据
router.post('./addBanner',( req, res)=>{
	console.log(req.body)
    let {imgPath,url,name}= req.body
    Banner.insertMany({imgPath,url,name}).then((data)=>{
         res.send({ err:0,msg:'添加成功' })
    }).catch((err)=>{
         res.send({ err:-1,msg:'添加失败' })
    })     
})

// 修改 banner 数据
router.post('./updateBanner',( req, res)=>{
     Banner.update( {_id:id}, {imgPath,url,name} )
     console.log('getBanner')
})

module.exports = router;

七、服务文件

在 app.js 中连接 MongoDB:

7.1. app.js 文件

js 复制代码
const express= require('express');
const path= require('path');
const app= express()
const db= require('./src/db/connect.js')
//post配置
var bodyParser= require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended:false }))

//配置静态目录
app.use(express.static( path.json( __diename,'./atatic' )))
//路由相关
const server= require('./src/routes/server.js')
app.use('./server', server)

app.listen(3000,()=> {
    console.log('服务器启动')
})

八、感谢

如果觉得有用欢迎点赞关注收藏。

有问题私信我!!~~

相关推荐
钛态34 分钟前
AI 辅助:前端框架反模式:过度封装、状态滥用与副作用失控
前端·vue·react·web
by__csdn37 分钟前
Vue vs React vs Angular:前端框架终极对决
前端·vue.js·react.js·前端框架·vue·react·angular
钛态40 分钟前
前端框架选型决策框架:React、Vue、Svelte、Solid 的 2026 年横评
前端·vue·react·web
2501_926102861 小时前
深入浅出Vue.js前端框架设计:核心原理与实践指南
前端·vue.js·前端框架
程序员黑豆2 小时前
使用AI编程开发鸿蒙应用:从环境搭建到实战示例
前端·harmonyos
程序员黑豆5 小时前
鸿蒙应用开发:一次开发多端部署之响应式布局完全指南
前端·harmonyos
小月土星6 小时前
2.0 React Router 前端路由深度解析:从传统后端路由到现代 SPA 的完整演进
前端
long3168 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
badhope3389 小时前
当所有AI都在抄同一份作业:前端模板的趋同、困局与破局
前端·ai·ai编程·前端开发·tailwind·ui设计
数据库小学妹9 小时前
数据库等保三级和四级有什么区别?从访问控制到备份恢复的完整对比
数据库·安全·数据库安全·三级等保·等保合规·四级等保