<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[爱代码的小海的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_44747461</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_44747461]]></copyright><item><title><![CDATA[mongoose使用aggregate]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121181138</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121181138</guid><author>qq_44747461</author><pubDate>Sat, 06 Nov 2021 16:32:59 +0800</pubDate><description><![CDATA[orders表的Schema
goods表的Schema
aggregate聚合管道的使用


orders表的Schema
var OrderSchema = mongoose.Schema({
    order_id: {
        type: String,
    },
    uid: {
        type: String,
    },
    trade_no: {
        type: String,
    },
    all_price: {
        ..]]></description><category></category></item><item><title><![CDATA[mongoose校验数据]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121181002</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121181002</guid><author>qq_44747461</author><pubDate>Sat, 06 Nov 2021 16:26:23 +0800</pubDate><description><![CDATA[Schema的数据校验
required-必填校验
长度校验
大小校验
enum-枚举校验
match-正则匹配
validate-自定义校验规则


Schema的数据校验
在定义Schema数据模式的时候，可以对字段的值进行数据校验；
确保满足条件的数据才会被添加到数据库中。
required-必填校验

针对与任意类型，指定的字段必须传入

var userSchema = mongoose.Schema({
    name: {
        type: String,
        re..]]></description><category></category></item><item><title><![CDATA[mongoose中Schema的拓展]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121179856</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121179856</guid><author>qq_44747461</author><pubDate>Sat, 06 Nov 2021 15:28:16 +0800</pubDate><description><![CDATA[Schema的默认参数
Schema设置索引
Schema设置预定义模式修饰符
Schema自定义修饰符


Schema的默认参数
在定义Schema数据模式的时候，可以为字段设置默认值；
如果新增的时候，没有设置该字段的值，那么就会使用默认参数；
var userSchema = mongoose.Schema({
    name: String,
    age: Number,
    isUse: {
        type: Boolean,
        default: true
..]]></description><category></category></item><item><title><![CDATA[mongoose的模块化及Model静态方法和实例方法的扩展]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121178991</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121178991</guid><author>qq_44747461</author><pubDate>Sat, 06 Nov 2021 14:42:14 +0800</pubDate><description><![CDATA[mongoose模块化的步骤
封装链接方法
封装Model方法
使用Model方法


mongoose模块化的步骤

第一步 封装mongoose连接mongodb数据库的方法
第二步 封装collection结合对应模块的Model
第三步 使用Model

封装链接方法
// db.js
const mongoose= require("mongoose")

mongoose.connect("mongodb://127.0.0.1:27017/pmis", (err) =&gt; {
    ..]]></description><category></category></item><item><title><![CDATA[mongoose实现增删改查]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121178662</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121178662</guid><author>qq_44747461</author><pubDate>Sat, 06 Nov 2021 14:25:22 +0800</pubDate><description><![CDATA[Node.js使用mongoose
mongoose操作数据的步骤

定义数据模式Schema
定义数据模型Model
调用具体的操作方法


mongoose实现数据的增删改查

查询数据
新增数据
更新数据

updateOne
updateMany
findOneAndUpdate
findByIdAndUpdate


删除数据




Node.js使用mongoose

第一步：安装mongoose，npm install mongoose
第二步：引入mongoose，const mong..]]></description><category></category></item><item><title><![CDATA[express实现文件上传]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121004677</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121004677</guid><author>qq_44747461</author><pubDate>Wed, 27 Oct 2021 23:18:03 +0800</pubDate><description><![CDATA[express使用multer插件
自定义multer配置
multer实现多字段文件上传


express使用multer插件

在不使用三方中间件的情况下，虽然可以使用form表单上传文件，但是无法将文件保存到静态文件资源目录中去


第一步：安装multer；npm install multer --save
第二步：引入multer; const multer = require('multer')
第三步：实例化multer
第四步：在路由中使用


使用multer的时候，需要在form表..]]></description><category></category></item><item><title><![CDATA[express模块化以及模板生成器]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121004660</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121004660</guid><author>qq_44747461</author><pubDate>Wed, 27 Oct 2021 23:17:21 +0800</pubDate><description><![CDATA[express模块化
express模板生成器

启动模板项目
模板项目的结构
生成模板的参数




express模块化

使用express框架提供的Router方法，可以实现路由的模块化，使得项目结构更加清晰
路由的模块化可以实现嵌套，即子模块中还可以继续使用其他路由模块

// menu.js 菜单模块相关的接口
const express = require('express')
const menu = express.Router()

menu.get("/", (req, res) ..]]></description><category></category></item><item><title><![CDATA[express中使用session]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/121004641</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/121004641</guid><author>qq_44747461</author><pubDate>Wed, 27 Oct 2021 23:16:33 +0800</pubDate><description><![CDATA[express中使用session
session的增删改查

新增、编辑、查询
删除


session的分布式存储（存储到数据库）


express中使用session

利用express-session中间件，可以使用session来缓存信息


第一步：安装中间件；npm install express-session --save
第二步：引入中间件；const session = require("express-session")
第三步：使用中间件；

app.set('trust ..]]></description><category></category></item><item><title><![CDATA[express中使用cookie]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120897560</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120897560</guid><author>qq_44747461</author><pubDate>Fri, 22 Oct 2021 00:16:45 +0800</pubDate><description><![CDATA[express中使用cookie
cookie-parser的配置项参数分析


express中使用cookie

利用cookie-parser中间件，可以使用cookie进行信息的缓存


第一步 npm install cookie-parser --save
第二步 引入中间件 const cookieParser = require("cookie-parser")
第三步 使用中间件 app.use(cookieParser())

// 设置cookie 键名 键值 配置
res.coo..]]></description><category></category></item><item><title><![CDATA[express中使用ejs模板]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120897543</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120897543</guid><author>qq_44747461</author><pubDate>Fri, 22 Oct 2021 00:16:08 +0800</pubDate><description><![CDATA[express使用ejs模板

express配置ejs模板引擎的文件夹
express修改ejs模板引擎的后缀名
express托管静态资源文件


ejs渲染数据

ejs模板绑定数据
ejs模板渲染HTML
ejs模板的条件判断
ejs模板的for循环
ejs模板引入外部文件（公共组件）




express使用ejs模板

第一步 npm install ejs --save
第二步 app.set('view engine', 'ejs')
第三步 使用（默认加载模板引擎的文件夹是views..]]></description><category></category></item><item><title><![CDATA[express中间件]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120897536</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120897536</guid><author>qq_44747461</author><pubDate>Fri, 22 Oct 2021 00:15:14 +0800</pubDate><description><![CDATA[express中间件
中间件的分类

应用级中间件
路由级中间件
错误处理中间件
配置静态web资源目录、解析请求参数等功能
第三方中间件




express中间件
中间件就是匹配路由之前，或者匹配路由完成以后执行的一系列的操作，中间件如果想要往下匹配的话，需要执行next
中间件的分类
应用级中间件

匹配路由，用于权限判断，可以做一些全局处理的业务

// 实现每次访问路由 访问次数加一的功能
var visitNum = 0;
app.use((req, res, next) =&gt; {
..]]></description><category></category></item><item><title><![CDATA[express路由]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120897526</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120897526</guid><author>qq_44747461</author><pubDate>Fri, 22 Oct 2021 00:14:00 +0800</pubDate><description><![CDATA[nodejs使用express
express的路由

四种请求形式
多级路由
动态路由
get传值
post传值




nodejs使用express

第一步：下载express npm install express --save
第二步：引入express const express = require("express")
第三步：实例化express const app = express()

express的路由
四种请求形式


get请求 一般用于获取数据
app.get("/",..]]></description><category></category></item><item><title><![CDATA[Node.js-fs模块]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120731460</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120731460</guid><author>qq_44747461</author><pubDate>Tue, 12 Oct 2021 20:37:52 +0800</pubDate><description><![CDATA[fs模块的方法分类

按操作类型分类
按操作对象分类


fs模块的方法列表

fs.stat() 检测是文件还是目录
fs.mkdir() 创建目录
fs.writeFile() 创建并写入文件
fs.appendFile() 追加文件内容
fs.readFile() 读取文件
fs.readdir() 读取文件和目录 只会读取一层 不会递归读取
fs.rename() 重命名 或者 移动文件
fs.rmdir() 删除目录
fs.unlink() 删除文件




fs模块的方法分类
按操作类型分类..]]></description><category></category></item><item><title><![CDATA[Node.js-模块]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120731439</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120731439</guid><author>qq_44747461</author><pubDate>Tue, 12 Oct 2021 20:24:24 +0800</pubDate><description><![CDATA[模块和自定义模块

nodejs采用commonjs标准对模块进行导出和导入

commonjs导出的两种形式

第一种：使用exports.变量的形式
第二种：使用module.exports = 变量的形式
exports导出模块 相当于在exports对象上添加变量
module.exports导出模块 相当于导出的内容就是exports对象

// 导出文件
function formatApi (api) {
    return `http://www.baidu.com${api}`
}

f]]></description><category></category></item><item><title><![CDATA[Node.js-url模块]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120731422</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120731422</guid><author>qq_44747461</author><pubDate>Tue, 12 Oct 2021 20:23:31 +0800</pubDate><description><![CDATA[可以对客户端传递的url地址的处理

const http = require('http')
const url  = require('url')

http.createServer(function(req, res) {
    // 通过parse方法可以对地址进行解析 query就是客户端传递的参数
    var query = url.parse(req.url).query

    res.writeHead(200, {'Content-Type': 'text/html;char.]]></description><category></category></item><item><title><![CDATA[Node.js-http模块]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120731326</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120731326</guid><author>qq_44747461</author><pubDate>Tue, 12 Oct 2021 20:21:48 +0800</pubDate><description><![CDATA[// 引入nodejs的核心模块http
const http = require('http')

// createServer方法创建一个应用
http.createServer(function(req, res) {
    // req 获取客户端传过来的信息
    // res 返回给浏览器的信息

    // 设置返回的状态码 文本类型 以及编码格式
    res.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'})]]></description><category></category></item><item><title><![CDATA[ES6-import和export]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120499079</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120499079</guid><author>qq_44747461</author><pubDate>Sun, 26 Sep 2021 23:05:38 +0800</pubDate><description><![CDATA[ES6模块化的概述
export命令

export导出变量的两种形式
export导出时使用 as 关键字重命名
export导出的注意点


export default命令
import命令

import + export 导出变量
import + export default 导出变量
import导入变量的注意点


export与import的复合写法


ES6模块化的概述
模块功能主要由两个命令构成：export和import。export命令用于规定模块的对外接口，import命令..]]></description><category></category></item><item><title><![CDATA[ES6-Class类的继承]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120425179</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120425179</guid><author>qq_44747461</author><pubDate>Wed, 22 Sep 2021 23:22:08 +0800</pubDate><description><![CDATA[ES5实现类的继承
Class类实现继承

constructor和super函数
Class类静态方法的继承
Object.getPrototypeOf()


super关键字

super函数调用
Super对象使用


类的prototype属性和__proto__属性


ES5实现类的继承
实质是先创造子类的实例对象this，然后再将父类的方法添加到this上面，Parent.apply(this)。
function Phone(brand, price) {
    this.brand..]]></description><category></category></item><item><title><![CDATA[ES6-Class类的基本语法]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120403076</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120403076</guid><author>qq_44747461</author><pubDate>Tue, 21 Sep 2021 16:48:26 +0800</pubDate><description><![CDATA[Class类的简介
使用Class类的注意点
setter和getter函数
静态方法
new.target属性


Class类的简介
ES6引入了Class（类）这个概念，作为对象的模板。通过class关键字，可以定义类。可以当做一个语法糖，绝大多数功能，ES5都可以做到。

ES5通过构造函数生成示例对象

function Phone (brand, price) {
    this.brand = brand;
    this.price = price;
}

Phone.prototy..]]></description><category></category></item><item><title><![CDATA[ES6-Set和Map数据结构]]></title><link>https://blog.youkuaiyun.com/qq_44747461/article/details/120319579</link><guid>https://blog.youkuaiyun.com/qq_44747461/article/details/120319579</guid><author>qq_44747461</author><pubDate>Wed, 15 Sep 2021 23:45:54 +0800</pubDate><description><![CDATA[Set数据结构

Set实例的属性和方法

属性
方法


Set结构的遍历操作

keys() values() entries()
forEach()
遍历的应用
遍历修改数据源




Map数据结构

Map结构赋值的一些注意点
Map的实例属性和操作方法
Map结构的遍历操作
Map结构与其他数据结构的转换


Set和Map的区别


Set数据结构
Set是ES6提供的一种新的数据结构，类似于数组，但是成员值都是唯一的，没有重复值；
Set本身就是一个构造函数，用来生成Set数据结构
//..]]></description><category></category></item></channel></rss>