Express及mongoose搭建数据库(增删改查)

express是什么?

Express.js 是一个基于 Node.js 平台的 Web 应用程序框架,它旨在帮助开发者轻松构建和管理 Web 服务和应用程序。Express 提供了许多强大的功能,使得创建可扩展、灵活且高性能的 Web 应用变得相对容易。

安装Express步骤

确保已经安装了 Node.js 和 npm,使用npm创建express项目

// 步骤一,安装express包
npm i express -g// 步骤二,安装express-generator包
npm i express-generator -g

使用express-generator生成express项目

// node-api是项目名称
express --no-view node-api// 使用cd进入创建的项目文件,例如
cd node-api//进入项目文件后初始化项目
npm i

配置跨域,安装cors模块,可参照

// 安装命令
npm i cors --save// 在app.js文件中引入cors模块并使用,例如
var express = require("express");
var path = require("path");..........
..........// 在这里引入即可
var cors = require("cors");var indexRouter = require("./routes/index");
var usersRouter = require("./routes/users");var app = express();
// 在这里使用
app.use(cors());.........
.........module.exports = app;

 安装nodemon这个包

npm i nodemon -D

 然后修改package.json中的配置,修改成nodemon

 "scripts": {"start": "nodemon ./bin/www"},

 经过此步骤后,查看是否能启动这个服务器

// 启动命令/控制台启动
nodemon

安装mongoose步骤

进入mongoose官网:Mongoose.js中文网

安装mongoose

npm i mongoose -S

 在mongoose.com中将以下代码放在app.js中

// app.js文件
var express = require("express");
var path = require("path");..........
..........var cors = require("cors");
// 在此处引入
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/数据库集合名');var indexRouter = require("./routes/index");
var usersRouter = require("./routes/users");var app = express();
app.use(cors());.........
.........module.exports = app;

在routes/index.js文件中创建集合配置字段类型

..........const mongoose = require("mongoose");
const Product = mongoose.model("Product", { name: String, price: Number });// 使用这行命令添加几条数据/记得注释掉(不然会一直添加 )
Product.create({name:'板子',price:123
})

下面进行功能测试,增删改查

添加数据
// 添加
router.post("/", async function (req, res, next) {const product = new Product(req.body);const result = await product.save();res.json({code: 200,message: "success",data: result,});
});

搜索查询分页
// 搜素,排序,分页
router.get("/", async function (req, res, next) {const page = req.query.page || 1;const limit = req.query.limit || 2;const skip = (page - 1) * limit;const searchName = req.query.name || "";const products = await Product.find().where({ name: searchName }).skip(skip).limit(limit).sort({ price: 1 });res.json({code: 200,message: "success",data: products,});
});

修改数据
// 修改
router.post("/:id", async function (req, res, next) {const id = req.params.id;await Product.updateOne({ _id: id }, req.body);res.json({code: 200,message: "success",});
});

删除数据
// 删除
router.delete("/:id", async function (req, res, next) {const id = req.params.id;const result = await Product.findOneAndDelete({ _id: id });res.json({code: 200,message: "del success",});
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

棋牌的电脑计时计费管理系统教程,棋牌灯控管理软件操作教程

一、前言 有的棋牌室在计时的时候,需要使用灯控管理,在开始计时的时候打开灯,在结账后关闭灯,也有的不需要用灯控,只用来计时。 下面以 佳易王棋牌计时计费管理系统软件为例说明: 软件试用版下载或技术支…

LVS+Keepalived集群的介绍和搭建

目录 LVSKeepalived集群的介绍 Keepalived及其工作原理 Keepalived体系主要模块及其作用 一个合格的集群应该具备的特性 健康检查(探针)的方式 实验:搭建LVSKeepalived集群 实验准备 实验步骤 LVS 部署 配置节点服务器 实验验证 实…

【【UART 传输数据实验】】

UART 传输数据实验 通信方式在日常的应用中一般分为串行通信(serial communication)和并行通信(parallel communication)。 我们再来了解下串行通信的特点。串行通信是指数据在一条数据线上,一比特接一比特地按顺序传…

中英购物商城 中英文网店系统怎么选

中英文网店系统能帮助企业将商品卖到不同国家和地区,有效走出国门的工具,在选择中英购物商城时,需要考虑以下几个方面: 1、语言支持:选择一款能够支持中英文双语的购物商城系统是必要的,同时建议选择能确认…

数据结构--图(更新ing~)

树具有灵活性,并且存在许多不同的树的应用,但是就树本身而言有一定的局限性,树只能表示层次关系,比如父子关系。而其他的比如兄弟关系只能够间接表示。 推广--- 图 图形结构中,数据元素之间的关系是任意的。 一、图…

[PTA]分寝室

学校新建了宿舍楼,共有 n 间寝室。等待分配的学生中,有女生 位、男生 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去,最后不能有寝室留空。 现请你写程序完成寝室的自动分配。分配规则如下: 男女生不能混住&…

如何去掉视频中不想要的水印,分享几个视频去水印技巧给你

如何去掉视频中不想要的水印?视频中的水印往往会遮挡画面,降低观看体验。本文将为您介绍三种方法,帮助您轻松去除视频中的水印,以便更好地欣赏和分享视频内容。 视频去水印技巧一:使用水印云 是一款操作简便、功能强大…

【C语言初阶】数组

目录 一、一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 二、二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 三、数组越界 四、数组作…

智能高效的Go开发工具GoLand v2023.3发布,支持AI辅助编码!

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…

图片速览 OOD用于零样本 OOD 检测的 CLIPN:教 CLIP 说不

PAPERCODEhttps://arxiv.org/pdf/2308.12213v2.pdfhttps://github.com/xmed-lab/clipn 文章创新 以往由CLIP驱动的零样本OOD检测方法,只需要ID的类名,受到的关注较少。 本文提出了一种新的方法,即CLIP说“不”(CLIPN)…

计算机基础,以及实施运维工程师介绍

目录 一.实施,运维工程师介绍 1.什么是实施工程师? 实施工程师职责 2.什么是运维工程师? 运维工程师职责 3.实施运维需要的技术 数据库 操作系统 网络 服务器 软件 硬件 网络 二.计算机介绍 CPU 存储器 io 总线 主板 三.操…

计算机毕业设计—基于Koa+vue的高校宿舍管理系统宿舍可视化系统

项目介绍 项目背景 随着科技的发展,智能化管理越来越重要。大学生在宿舍的时间超过了1/3,因此良好的宿舍管理对学生的生活和学习极为关键。学生宿舍管理系统能够合理安排新生分配宿舍,不浪费公共资源,减轻学校管理压力&#xff…

你了解Redis中的跳跃表吗?

跳跃表的基本内容: 对于一个有序序列,链表相对于数组来说,删除和插入的效率要快很多,只需要改变指针的指向,但是在查找的时候,数组就要更占优势一些,可以随机访问,然而链表需要从头…

oracle与gbase8s迁移数据类型对照

声明:以下为笔者阅读gbase官方文档和oracle官方文档的理解,如有错误,敬请指正。oracle与gbase8s迁移数据类型对照及举例说明 最终结论:oracle与gbase8s数据类型对应关系关于单精度与双精度的区别关于定点与浮点定义的区别精度的定…

[报错已解决]得到一个不期待的值added_cond_kwargs,图生图和文生图的pipline是不同的

报错内容 得到一个不期待的值added_cond_kwargs 问题原因 对照下图,做测试unet_2d_condition.py里面UNet2dConditionModel类的forward输入 而StableDiffusionPipline(文生图t2i)的self.unet输入里面多了一个added_cond_kwargs需要写 从下图可…

函数torch.bincount( )的用法

torch.bincount()函数是PyTorch中的一个函数,用于计算一维整数张量中每个非负整数值出现的频次 函数的用法 : torch.bincount(input, weightsNone, minlength0) → Tensor 参数: input:输入的一维整数张量weights(…

机器学习——支持向量机

目录 一、基于最大间隔分隔数据 二、寻找最大间隔 1. 最大间隔 2. 拉格朗日乘子法 3. 对偶问题 三、SMO高效优化算法 四、软间隔 五、SMO算法实现 1. 简化版SMO算法 2. 完整版SMO算法 3. 可视化决策结果 六、核函数 1. 线性不可分——高维可分 2. 核函数 …

设计模式 原型模式 与 Spring 原型模式源码解析(包含Bean的创建过程)

原型模式 原型模式(Prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。 原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。 工作原…

新年跨年烟花超酷炫合集【内含十八个烟花酷炫效果源码】

❤️以下展示为全部烟花特效效果 ❤️下方仅展示部分代码 ❤️源码获取见文末 🎀HTML5烟花喷泉 <style> * {padding:0;margin:0; } html,body {positi

清华提出ViLa,揭秘 GPT-4V 在机器人视觉规划中的潜力

人类在面对简洁的语言指令时&#xff0c;可以根据上下文进行一连串的操作。对于“拿一罐可乐”的指令&#xff0c;若可乐近在眼前&#xff0c;下意识的反应会是迅速去拿&#xff1b;而当没看到可乐时&#xff0c;人们会主动去冰箱或储物柜中寻找。这种自适应的能力源于对场景的…