Node学习笔记:优化crud增删改查

时间: 2019-12-16阅读: 329标签: 优化

本篇文章结合前文《Node学习笔记 Mongodb和Mongoose》对 curd 示例 进行优化


MongoDB 安装

安装文件下载地址:[https://www.mongodb.com/download-center/community]

Windows 平台安装 MongoDB:https://www.runoob.com/mongodb/mongodb-window-install.html

在安装过程中需要特别注意,需要将 Install MongoDB Compass 前默认的勾选取消

可以使用 mongod --version 命令查看 MongoDB 版本,若版本号输出正常则安装完毕


Mongoose 安装和配置

npm install mongoose


优化 student.js 文件

有了 Mongoose 的帮助可以极大的简化数据的增、删、改、查工作

首先,配置 Mongoose

var mongoose = require('mongoose'); // 引入 mongoose
mongoose.connect('mongodb://localhost/test'); // 通过 mongoose 连接 mongodb 数据

其次,设计 Schema 数据结构

var mongoose = require('mongoose'); // 引入 mongoose
mongoose.connect('mongodb://localhost/test'); // 通过 mongoose 连接 mongodb 数据库

// 设计数据结构
var Schema = mongoose.Schema
var studentData = new Schema({ // 实例化 Schema
    name: { // 姓名
        type: String, // 数据类型 String
        required: true // 数据为必填项
    },
    gender: { // 性别
        type: Number, // 数据类型 Number
        default: 0, // 数据默认值
        enum: [0, 1] // 可枚举数据
    },
    age: { // 年龄
        type: Number // 数据类型 Number
    },
})

最后,导出 Student

module.exports= mongoose.model('Student', studentData)
// 将数据保存 Mongodb 数据库 Student 集合中
// 导出 Mongodb 数据

到此为止,student.js 优化完毕


优化 router.js 文件

对于 router.js 文件,我们只需要调用 mongoose 提供的增、删、改、查 API 既可

代码如下:

var Student = require('./student') // 引入 student.js (student 模块专职用于处理数据)

var express = require('express') // 引入 express
var router = express.Router() // 创建路由容器

// 将所有路由都挂在到 router 路由容器中
router.get('/', function (req, res) { // 渲染学生列表页面
	// .find() 用于从数据库中查询所有数据,接收一个函数参数
    // function (err, students) 接收两个参数,其一为错误信息,二为查询的数据 students
    Student.find(function (err, students) {
        if (err) { // 若路由跳转错误,则抛出 Server error,状态码 500
            return res.status(500).send('Server error.')
        }
        res.render('index.html', { // 响应返回学生列表页面
            students: students
        })
    })
})

router.get('/new', function (req, res) { // 渲染添加学生页面
    res.render('new.html')
})

router.post('/new', function (req, res) { // 处理添加学生
    // new Student(req.body) 新建一条数据
    // .save 用于将数据添加到数据库,接收一个函数参数
    // function (err) 参数用于接收错误信息
    new Student(req.body).save(function (err) {
        if (err) { // 若路由跳转错误,则抛出 Server error,状态码 500
            return res.status(500).send('Server error.')
        }
        res.redirect('/') // 页面重定向回首页
    })
})

router.get('/edit', function (req, res) { // 渲染编辑学生页面
    // .findById() 用于根据 id 查询一条数据,接收两个参数,其一为匹配数据,二为函数
    // function (err, student) 函数接收两个参数,其一为错误信息,二为查询数据结果
    // req.query.id.replace(/"/g, '') 为需查询的数据 id ,通过 .replace 将 id 字符串转化为数字类型
    Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
        if (err) { // 若路由跳转错误,则抛出 Server error,状态码 500
            return res.status(500).send('Server error.')
        }
        res.render('edit.html', { // 响应返回编辑学生页面
            student: student
        })
    })
})

router.post('/edit', function (req, res) { // 处理编辑学生
    // .findByIdAndUpdate() 用于根据 id 更新数据,接收三个参数,其一为匹配数据,二为需替换的数据,三为函数
    // function (err) 函数接收错误信息
    // req.body.id.replace(/"/g, '') 为需查询的数据 id ,通过 .replace 将 id 字符串转化为数字类型
    var id = req.body.id.replace(/"/g, '')
    Student.findByIdAndUpdate(id, req.body, function (err) {
        if (err) { // 若路由跳转错误,则抛出 Server error,状态码 500
            return res.status(500).send('Server error.')
        }
        res.redirect('/') // 页面重定向回首页
    })
})

router.get('/students/delete', function (req, res) { // 处理删除学生
    // .findByIdAndRemove() 用于根据 id 删除对应数据,接收两个参数,其一为匹配数据,二为函数
    // function (err) 函数接收错误信息
    // req.body.id.replace(/"/g, '') 为需查询的数据 id ,通过 .replace 将 id 字符串转化为数字类型
    var id = req.query.id.replace(/"/g, '')
    Student.findByIdAndRemove(id, function (err) {
        if (err) { // 若路由跳转错误,则抛出 Server error,状态码 500
            return res.status(500).send('Server error.')
        }
        res.redirect('/') // 页面重定向回首页
    })
})

module.exports = router // 导出 router

文章已同步我的个人博客:《Node学习笔记 优化crud增删改查

站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6875

webpack构建速度常规优化方法

使用webpack.DllPlugin优化,其实并没有优化速度,只是把一些不需要经常变更的部分提前构建,之后只需要构建变更的部分就可以了,确实优化了时间,使用external,不构建基础脚本,使用外部脚本引入,确实减少了时间

移动 H5 首屏加速、优化方案

随着移动设备性能不断增强,web 页面的性能体验逐渐变得可以接受,又因为 web 开发模式的诸多好处(跨平台,动态更新,减体积,无限扩展)

如何设置网站的robots.txt?

做过网站优化的朋友都知道,搜索引擎蜘蛛爬行抓取网站时首先会去访问根目录下的robots.txt文件,如果robots文件存在,则会根据robots文件内设置的规则进行爬行抓取,如果文件不存在则会顺着首页进行抓取,那么robots文件的工作原理是什么呢?

性能优化小册 - React 搜索优化:防抖、缓存、LRU

最近要对 react 项目做重构优化等相关的工作,由于有好长时间没碰 React 了,今天索性把一个基于关键字搜索的 demo 做一下简单优化,在此记录以下。

优化网页加载速度的方法总汇

优化方案的核心就3点:减少请求数、减少资源大小、找最快的服务器。如果你是一个网站的产品经理,快去找你们的开发确认是否有做过类似的优化吧。网页的加载流程。优化图片资源的格式和大小、开启网络压缩、使用浏览器缓存、减少重定向请求

js中for循环优化总结_如何提高程序的执行效率

在程序开发中,经常会使用到for循环的,但是很多人写的for循环效率都是比较低的,下面就举例说明,并总结优化for循环的方法,来提高我们程序的执行效率。

Web前端性能优化

web性能优化,主要分为前端和后台两个部分性能优化,后台性能优化决定了web能不能用,前端优化决定了其好不好用,也就是牵涉到前端用户体验和web易用性等情况,所以前端性能与用户体验是有着极大的关联的。

js查重去重性能优化心得

今天产品反映有个5000条数据的页面的保存按钮很慢,查看代码看到是因为点击保存按钮之后,进行了查重操作,而查重操作是用2个for循环完成了,时间复杂度是O(n^2)。没办法,只能想办法优化一下了。

Vue项目优化

在日常的Vue项目开发中,随着业务的日渐负责,代码量的日益增加,随之带来的问题就是打包后的vendor.js体积过大,导致加载时空白页时间过长,给用户的体验太差。为此我们需要减少vendor.js的体积,从本质上来解决这种问题

优化(Vue)Javascript文件体积

可以看到竟然有8M和5.3M这么大的文件!在本地开发时由于本地网络打开文件很快感受不明显,但当把这些文件部署到服务器上,能明显感觉首屏打开时间是非常慢的。好,看到了问题,我们来优化~

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广