2、服务端接口开发
2.1、服务端项目结构设计
2.1.1、设计路由
在 routes
目录下创建当前模块的路由文件,例如 routes/goods.js
商品模块的路由,示例代码如下:
var express = require('express')
var router = express.Router()
//处理get请求
router.get('/find', (req,res)=>{
//接收参数
let {id} = req.query
//响应数据
res.json({
msg: '查询成功'
})
})
//处理post请求
router.post('/add', (req,res)=>{
//接收参数
let g = req.body
//响应数据
res.json({})
})
module.exports = router
在 app.js
入口文件引入路由
var express = require('express')
var goodsRouter = require('./routes/goods') //引入路由
var app = express()
app.use('/goods', goodsRouter)
当前商品模块的路由访问地址为:
http://localhost:3000/goods/add (post请求)
http://localhost:3000/goods/find (get请求)
2.1.2、设计数据库模块
在 models
目录下创建模块文件,例如 models/goods.js
文件,示例代码如下:
var mongoose = require('mongoose')
//创建商品文档对象
var schema = new mongoose.Schema({
title: String,
price: Number
})
var Goods = mongoose.model('goods',schema)
文档对象的API(以 Goods
为例):
//添加数据,create(g)参数为要添加的对象,执行成功后返回的是添加成功的对象
Goods.create(g).then(rel=>{}).catch(err=>{})
//修改数据,updateOne()参数1为修改条件,参数2为要修改的新对象,返回修改的结果对象,当 rel.n > 0 时表示修改成功
Goods.updatOne(where,params).then(rel=>{}).catch(err=>{})
//删除数据,findOneAndDelete()参数为删除条件,返回删除成功的对象
Goods.findOneAndDelete(where).then(rel=>{}).catch(err=>{})
//查询所有,find()参数为查询条件
Goods.find(where).then(rel=>{}).catch(err=>{})
//排序查询所有,sort()参数为排序条件 {price: 1}为价格升序,{price: -1}为价格降序,多条件语法 {price:1, sal: -1}
Goods.find().sort({price: -1}).then(rel=>{}).catch(err=>{})
//分页查询,start表示查询的起始位置(索引),pageSize表示每页查询的条数
//start = (当前页码 - 1) × 每页条数
Goods.find().skip(start).limit(pageSize).then(rel=>{}).catch(err=>{})
//查询总记录数,find()参数为查询条件,返回当前数据的总数量
//总页数 = Math.ceil(count/pageSize)
Goods.find(where).count().then(rel=>{}).catch(err=>{})
Goods.find(where).countDocuments().then(rel=>{}).catch(err=>{})
//模糊查询,查询对象为一个包含正则表达式的条件对象
Goods.find({title: {$regex: /['裤']|['男']/}}).then(rel=>{}).catch(err=>{})
//比较查询,查询条件中 $gt表示大于,$lt表示小于
Goods.find({price: {$gt: 200, $lt: 300}}).then(rel=>{}).catch(err=>{})
在路由文件中引入当前的文档对象,例如:在 routes/goods.js
路由文件中引入 models/goods.js
,示例代码如下:
var express = require('express')
var router = express.Router()
var Goods = require('../models/goods') //引入商品文档对象,使用Goods对象操作数据库
//查询所有
router.get('/find', (req,res)=>{
//接收参数
let {_id} = req.query
//操作数据库
Goods.find({_id}).then(result=>{
res.json({
msg: '查询成功'
})
}).catch(err=>{
res.json({
msg: '查询时出现异常'
})
})
})
//查询单条数据
router.get('/findOne', (req,res)=>{
})
//添加
router.post('/add', (req,res)=>{
})
//修改
router.post('/update', (req,res)=>{
})
//删除
router.get('/del', (req,res)=>{
})
module.exports = router