react + redux Router + node实践总结(express+mongodb)

Express+mongodb开发web后台接口

  • 非关系型数据库mongodb(类似于mySql, 存储的是json数据)
    使用nodeJS的mongoose模块连接mongodb进行操作mongodb数据

Express

基于nodejs,快速、开放、极简的web开发框架
Express是node开发web接口的一个框架,用于监听接口、渲染页面,类似的还有PHP CI框架
1. 安装express
npm install express –save
2. express应用

// node中应使用require来加载文件,import属于ES6语法
const express = require('express')

// 新建app
const app = express()
// app.get(path, function(请求,响应)
// '/' 代表根目录
app.get('/', function(req, res) {
    res.send('<h1>hello world</h1>')
})
// 执行时localhost:9093/data
// 页面显示{name: 'lmh', type: 'IT')
app.get('/data', function(req, res) {
    res.json({name: 'lmh', type: 'IT'})
})
// 监听9093接口
app.listen(9093, function() {
    console.log('Node app start at port 9093')
})
// 运行时需要切换至此文件下,使用node 文件名来启动文件
// 在浏览器localhost:9093查看执行结果
  1. 监听路由和响应内容,使用nodemon自动重启
    npm install -g nodemon // 安装nodemon
    会自动监听代码的变化,当代码发生变化时,无需手动执行node 文件名,nodemon会自动去重启服务
  2. exporess其他的特性
    1. app.get、app.post分别开发get和post接口
    2. app.use使用模块(在复杂应用中,会将路由拆分为多个模块,在主模块中使用use来引用模块)
    3. 代res.send(文本内容)、res.json(json数据)、res.sendfile(文件)响应不同的内容

Mongodb:非关系型数据库

官网https://www.mongodb.com/下载安装mongodb
// 运行mongodb
mongod –config /usr/local/etc/mongod.conf
mongo
// 安装mongoose,用于连接mongodb
npm install mongoose –save
1. Mongoose基础使用
- Connect连接数据库
- 定义文档模型(类似于mysql中的表),Schema和model新建模型
- 代一个数据库文档对应一个模型,通过模型对数据库进行操作
2. Mongoose文档类型
1. String, Number等数据结构
2. 定义create, remove, update分别用来增、删、改的操作
3. Find和findOne用来查询数据
3. Express+mongodb实战
增删改查
1. mongod –config /usr/local/etc/mongod.conf 后台启动
2. Express结合mongodb
3. 封装mongoose
4. 后续进阶:Express和mongodb结合
1. mongodb独立工具函数
2. express使用body-parser支持post参数
3. 使用cookie-parser存储登录信息cookie

// node中不能使用import(ES6)来引入文件,所以使用require来加载文件
const express = require('express')
const mongoose = require('mongoose')

//连接mongodb,并且使用imooc这个集合
const DB_URL = 'mongodb://localhost:27017/imooc'
mongoose.connect(DB_URL)
mongoose.connection.on('connected', function() {
    console.log('mongo connect success')
})
// mongodb类似于mysql的表,mongodb里有文档、字段的概念
// 通过mongoose操作mongodb, 存储的就是json, 相对mysql来说,要易用很多
// mongoose.model(表名, 数据集合)
const User = mongoose.model('user', new mongoose.Schema({
    // type数据结构类型,require:字段是否必填
    user: {type:String, require: true},
    age: {type:Number, require: true}
}))
// 新增数据: create(数据,新增数据成功后的回调函数)
User.create({
    user: 'imooc',
    age: 18
}, function(err, doc) {
    // node中的回调函数多数的第一个参数为err(错误信息)
    if (!err) {
        console.log(doc)
    } else {
        console.log(err)
    }
})
// 新建app
const app = express()
// app.get(path, function(请求,响应)
// '/' 代表根目录
app.get('/', function(req, res) {
    res.send('<h1>hello world</h1>')
})
// 执行时localhost:9093/data
// 页面显示{name: 'lmh', type: 'IT')
app.get('/data', function(req, res) {
    // res.json({name: 'lmh', type: 'IT'})
    // 查找所有数据:find显示查找到的所有数据,findOne仅查找一条数据
    User.find({}, function(err, doc) {
        res.json(doc)
    })
})
// 删除数据
app.get('/delete', function(req, res) {
    User.remove({age: 18}, function(err, doc) {
        res.json(doc)
    })
})
// 更新数据
app.get('/update', function(req, res) {
    // update(更新哪条记录,{'$set': 更新当前记录的哪些值}, 更新成功后的回调函数)
    User.update({'user': 'imooc'}, {'$set': {age: 26}}, function(err, doc) {
        res.json(doc)
    })
})

// 监听9093接口
app.listen(9093, function() {
    console.log('Node app start at port 9093')
})

猜你喜欢

转载自blog.csdn.net/qq_40352733/article/details/80794819