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入门教程相关推荐

  1. [转]Express入门教程:一个简单的博客

    来源:http://www.open-open.com/lib/view/open1454560780730.html 转载于:https://www.cnblogs.com/hcbin/p/5317 ...

  2. node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...

  3. 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 ...

  4. Nest入门教程 - 初识控制器

    Nest入门教程 - 初识控制器 控制器 控制器负责处理传入的 请求 和向客户端返回 响应 . 控制器的目的是接收应用的特定请求.路由机制控制哪个控制器接收哪些请求.通常,每个控制器有多个路由,不同的 ...

  5. Node.js 官网入门教程(二) npm(安装、包版本、卸载、npx)、package.json(scripts、devDependencies)package-lock.json(语义版本规则符号

    Node.js 官网入门教程(二) npm(包管理.安装.包版本.卸载.npx).package.json(scripts.devDependencies).package-lock.json(语义版 ...

  6. ArcGIS Runtime SDK for Windows Phone 入门教程

    ArcGIS Runtime SDK for Windows Phone 入门教程 基本概念 Windows Phone平台介绍 Windows Phone是微软发布的一款手机操作系统,它将微软旗下的 ...

  7. JSON Web Token 入门教程

    JSON Web Token 入门教程 转载http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html JSON Web T ...

  8. 《进击吧!Blazor!》系列入门教程 第一章 4.数据交互

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  9. 献给初学者-DSP入门教程【转】

    献给初学者-DSP入门教程 helloDSP论坛 前言:此资料也是来源于网络,并不是我们原创,但是希望这些资料能够给初学DSP的 朋友们一点帮助,也希望你们能够把这里当成是你们学习DSP技术的一个家园 ...

最新文章

  1. 我常用的那些linux命令
  2. Ajax与企业级应用开发
  3. 小块头大性能才能得到用户的青睐
  4. 用两个矩阵的点积计算神经网络的迭代次数 2-8
  5. 从实例入手学习Shiro自定义Realm实现查询数据进行验证
  6. Vue实现禁止链接打开
  7. ElasticSearch搜索引擎: 内存分析与设置
  8. 获取父窗口元素或者获取iframe中的元素(相同域名下)
  9. 微信公众平台中的openid是什么
  10. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  11. 036、JVM实战总结:糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!
  12. 图片生成html_markdown 生成头条文章的一个实现
  13. 数组 spark_spark——rdd常用的转化和行动操作
  14. Fultter 实战No toolchains found in the NDK toolchains folder for ABI arm-linux-androideabi
  15. 百度支持nofollow是百度的进步
  16. 如何在Linux中考硬盘数据,Linux硬盘文件数据粉碎
  17. 自学编程容易可行吗?
  18. adobe acrobat pro dc 无法打开PDF_PDF编辑Acrobat Pro软件教程 Acrobat XI Pro 全面技能标准培训视频...
  19. 利用搜索关键字爬取今日头条新闻评论信息案例
  20. 白化Whitening

热门文章

  1. 【附源码】Java计算机毕业设计高校奖学金评定管理系统(程序+LW+部署)
  2. OPC UA 和 MQTT
  3. UNI-APP_开发支付宝小程序注意事项与解决方法,支付宝小程序图片显示问题
  4. Python化简根号,根号化简,python实现
  5. 2022(一等奖)B1048基于土地利用强度指标的中国城镇化时空演变规律研究
  6. 咸鱼卖货操作技巧实操经验
  7. Latex如何给公式编号
  8. java如何判断活动的namenode_NameNode HA异常调查
  9. 【Java 复习之路】三人行-Java复习
  10. Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件