Express入门教程
1.1-学习环境
Node.js : 0.10.32
Express : 4.10.2
MongoDB : 2.6.1
Nodemon: 2.0.19
1.2-快速开始
安装 Express
express 是 Node.js 上最流行的 Web 开发框架,正如他的名字一样,使用它我们可以快速的开发一个 Web 应用。我们用 express 来搭建我们的博客,打开命令行,输入:
$ npm install -g express-generator
安装 express 命令行工具,使用它我们可以初始化一个 express 项目。
新建一个工程
注: 我们也可自己手动搭建工程目录!
在命令行中输入:
$ express -e blog
$ cd blog && npm install
初始化一个 express 项目并安装所需模块!
配置安装相关模块
注: 看需求配置相应模块
npm install cors
npm install mongoose
nmp install nodemon
{"dependencies": {"cors": "^2.8.5","express": "^4.18.1","mongoose": "^6.4.5","nodemon": "^2.0.19"}
}
然后运行: 将项目启动
nodemon app.js
使用数据库
MongoDB简介
MongoDB 是一个基于分布式文件存储的 NoSQL(非关系型数据库)的一种,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB 没有关系型数据库中行和表的概念,不过有类似的文档和集合的概念。文档是 MongoDB 最基本的单位,每个文档都会以唯一的 _id 标识,文档的属性为 key/value 的键值对形式,文档内可以嵌套另一个文档,因此可以存储比较复杂的数据类型。集合是许多文档的总和,一个数据库可以有多个集合,一个集合可以有多个文档。
models/db.js
const mongoose = require("mongoose")
mongoose.connect( "mongodb://localhost:27017/clothing", (err) => {if (!err) {console.log("数据库连接成功!");}
})
module.exports = mongoose
models/model.js
const mongoose = require("./db")
// 模型类
const Schema = mongoose.Schema// 衣服型号模型
const sizeTypeSchema = new Schema({ title: String,sort : Number
})
// 衣服属性模型
const clotheSchema = new Schema({name : String,desc: String,sort: String,// 关联外键 size_id: {type: Schema.Types.ObjectId,ref: "sizeType"}
})// 映射表关系
const sizeModel = mongoose.model("sizeType", sizeTypeSchema)
const clotheModel = mongoose.model("clothe", clotheSchema)module.exports = { sizeModel, clotheModel }
路由控制
const express = require("express")
const router = express.Router()const { sizeModel, clotheModel } = require("../models/model")// 获取数据
router.get("/clothe", async(req, res)=> {let keyWord = req.query.keyWord // 搜索关键字let clothes if ( keyWord ) {// 正向查询数据clothes = await clotheModel.find({ "name":{ $regex: keyWord } }).populate("size_id") .exec()}else{clothes = await clotheModel.find({}).populate("size_id") .exec()}res.json({ data: clothes })
})// 反向查询
router.get("/size", async(req, res)=> {// 没有外键的模型对象去查询有外键的关联对象查找; 衣服型号 =>> 衣服型号对应的属性let data = await sizeModel.aggregate([{$lookup: {from: "clothes", // 关联字段的表名localField: "_id", // 关联字段foreignField: "size_id", // 外键关联的字段as: "clothe" // 查询关联的表中数据的数组}}])res.json({ data })
})// 数据添加
router.post("/addCloth", async(req, res) =>{let result = await clotheModel.create( req.body )res.json({msg: "ok",code: "201", result})
})// 删除
router.delete("/delCloth/:_id", async (req, res)=>{let _id = req.params._idawait clotheModel.deleteOne({ _id })res.send({"code": 201, msg: "删除成功!"})
})// 修改
router.patch("/updateCloth/:_id", async(req, res) =>{let _id = req.params._idawait clotheModel.updateOne({ _id }, req.body).exec()res.json({mag: "ok", code: 201})
})module.exports = router
入口文件
app.js
const express = require("express")
const cors = require("cors")// 引入路由对象
const indexRouter = require('./routers/index')const app = express()// 跨域
app.use( cors() )// post 接收参数
app.use( express.urlencoded( { "extended": false } ) )
app.use( express.json() )// 路由注册
app.use( indexRouter )app.listen(8000, ()=> {console.log( 'server runing node!')
})
Express入门教程相关推荐
- [转]Express入门教程:一个简单的博客
来源:http://www.open-open.com/lib/view/open1454560780730.html 转载于:https://www.cnblogs.com/hcbin/p/5317 ...
- node.js Web应用框架Express入门指南
node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...
- ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...
- Nest入门教程 - 初识控制器
Nest入门教程 - 初识控制器 控制器 控制器负责处理传入的 请求 和向客户端返回 响应 . 控制器的目的是接收应用的特定请求.路由机制控制哪个控制器接收哪些请求.通常,每个控制器有多个路由,不同的 ...
- Node.js 官网入门教程(二) npm(安装、包版本、卸载、npx)、package.json(scripts、devDependencies)package-lock.json(语义版本规则符号
Node.js 官网入门教程(二) npm(包管理.安装.包版本.卸载.npx).package.json(scripts.devDependencies).package-lock.json(语义版 ...
- ArcGIS Runtime SDK for Windows Phone 入门教程
ArcGIS Runtime SDK for Windows Phone 入门教程 基本概念 Windows Phone平台介绍 Windows Phone是微软发布的一款手机操作系统,它将微软旗下的 ...
- JSON Web Token 入门教程
JSON Web Token 入门教程 转载http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html JSON Web T ...
- 《进击吧!Blazor!》系列入门教程 第一章 4.数据交互
<进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...
- 献给初学者-DSP入门教程【转】
献给初学者-DSP入门教程 helloDSP论坛 前言:此资料也是来源于网络,并不是我们原创,但是希望这些资料能够给初学DSP的 朋友们一点帮助,也希望你们能够把这里当成是你们学习DSP技术的一个家园 ...
最新文章
- 我常用的那些linux命令
- Ajax与企业级应用开发
- 小块头大性能才能得到用户的青睐
- 用两个矩阵的点积计算神经网络的迭代次数 2-8
- 从实例入手学习Shiro自定义Realm实现查询数据进行验证
- Vue实现禁止链接打开
- ElasticSearch搜索引擎: 内存分析与设置
- 获取父窗口元素或者获取iframe中的元素(相同域名下)
- 微信公众平台中的openid是什么
- ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
- 036、JVM实战总结:糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!
- 图片生成html_markdown 生成头条文章的一个实现
- 数组 spark_spark——rdd常用的转化和行动操作
- Fultter 实战No toolchains found in the NDK toolchains folder for ABI arm-linux-androideabi
- 百度支持nofollow是百度的进步
- 如何在Linux中考硬盘数据,Linux硬盘文件数据粉碎
- 自学编程容易可行吗?
- adobe acrobat pro dc 无法打开PDF_PDF编辑Acrobat Pro软件教程 Acrobat XI Pro 全面技能标准培训视频...
- 利用搜索关键字爬取今日头条新闻评论信息案例
- 白化Whitening
热门文章
- 【附源码】Java计算机毕业设计高校奖学金评定管理系统(程序+LW+部署)
- OPC UA 和 MQTT
- UNI-APP_开发支付宝小程序注意事项与解决方法,支付宝小程序图片显示问题
- Python化简根号,根号化简,python实现
- 2022(一等奖)B1048基于土地利用强度指标的中国城镇化时空演变规律研究
- 咸鱼卖货操作技巧实操经验
- Latex如何给公式编号
- java如何判断活动的namenode_NameNode HA异常调查
- 【Java 复习之路】三人行-Java复习
- Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件