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._id
    await clotheModel.deleteOne({ _id })
    res.send({"code": 201, msg: "删除成功!"})
})

// 修改 
router.patch("/updateCloth/:_id", async(req, res) =>{
    let _id = req.params._id
    await 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!')
})


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Express是一个基于Node.js平台的开源Web应用框架,它可以帮助开发者快速搭建和开发Web应用。而Express离线教程则是一种学习Express教程资源,它不依赖于互联网连接,可以在没有网络的情况下进行学习。 Express离线教程通常会提供一个离线版的文档,其中包含了Express框架的基础概念、核心功能、常用API等内容。这些文档可以通过下载或者使用一个离线文档阅读器来进行浏览。这样,就可以在没有网络连接的情况下,通过阅读文档来学习Express的使用。 与在线教程相比,Express离线教程的优点之一是不受网络条件限制,可以随时随地进行学习,无需担心网络连接问题。另外,离线教程通常比在线教程更加高效,因为它们不需要从互联网上获取信息,加载速度更快。而且,对于一些需要频繁查阅的资料,离线教程还可以帮助开发者节省网费和流量消耗。 不过,需要注意的是,离线教程只是提供了文档资源,对于一些需要实践的内容,比如示例代码的运行和调试,可能还需要一些网络资源。因此,在进行Express离线教程学习的同时,建议还是保持一定的网络连接,以便获取更多的实践和进阶资料。 总之,Express离线教程是一种可以在没有网络连接的情况下学习Express框架的教程资源。它的优点是不受网络条件限制,随时随地进行学习,同时还可以节省网费和流量消耗。但需要注意的是一些实践性的内容可能需要网络资源的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值