express+mongoose+restfulAPI对接

本文介绍了如何使用Express生成应用程序,配置自动重启,以及设置跨域访问。通过mongoose连接MongoDB数据库,创建用户列表数据表,并实现CRUD操作。同时,文章还展示了如何在app.js中配置解析POST数据以及处理路由。

一:Express 应用程序生成器

express --view=pug myapp

下载依赖

cd myapp
npm install

启动项目(更新一次要重启一次)

npm start

如果每次更新自动重启进行配置两种方法

1:

npm i nodemon --save

在package.json里设置

运行项目

npm run dev

2:

运行项目

npm start

项目监听的端口号为3000,如果被占用之后改端口号

在bin下的www里修改

 配置跨域(app.js里)

//设置跨域访问
app.all("*", function (req, res, next) {
  //设置允许跨域的域名,*代表允许任意域名跨域
  res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
  // //允许的header类型
  res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
  // //跨域允许的请求方式 
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  // 可以带cookies
  res.header("Access-Control-Allow-Credentials", true);
  if (req.method == 'OPTIONS') {
    res.sendStatus(200);
  } else {
    next();
  }
})

创建文件夹链接mongodb

npm i mongoose --save

model---->

连接数据库 (db.js)  如果忘记了地址可以在cmd输入mongo命令查看

const mongoose = require('mongoose')

mongoose.connect("mongodb://127.0.0.1:27017/react_monthed").then(() => {
    console.log('数据库连接成功');
})

创建数据表  (modelTables.js)

const mongoose = require('mongoose')

const userList = new mongoose.Schema({
    name: String,
    jiexi: String,
    Ower: String,
    img: String,
    Creatime: { type: Date, default: Date.now }
})


//后边有两个参数就是默认第一个参数加s是数据表,三个参数的化就是最后一个参数是数据表
var usersList = mongoose.model('BiaoList', userList, 'BiaoList')

//暴露出去
module.exports = usersList

在配置路由写方法 项目自带routes文件夹

 默认index为根 , user为/users

var express = require('express');
var router = express.Router();

//引入数据表
const userslist = require('../model/userList')

/* GET users listing. */
// router.get('/', function (req, res, next) {
//   res.send('respond with a resource');
// });
//get请求
router.get('/RenList', function (req, res) {
  const key = req.query.key

  try {
    //模糊查询
    userslist.find({ name: { $regex: key } }).then((result) => {
      res.json({ 'code': 200, "message": '成功', "list": result })
    })
  }
  catch {
    res.json({ 'code': 400, "message": '失败' })

  }


})


//post请求
router.post('/RenList', function (req, res) {
  try {
    new userslist(req.body).save().then((err) => {
      console.log(err, 335678);
      res.json({ 'code': 200, "message": '添加成功' })
    })
  }
  catch {
    res.json({ 'code': 400, "message": '添加失败' })
  }




})

//put请求
router.put('/RenList', function (req, res) {
  const msg = req.body
  userslist.update({ _id: req.body._id }, { $set: msg }).then((result) => {
    res.json({ 'code': 200, "message": '修改成功' })
  })


})

//delete请求
router.delete('/RenList', function (req, res) {
  const id = req.query.id
  // console.log(id, 'kbjin');
  userslist.findOneAndDelete({ _id: id }).then(result =>
    res.json({ 'code': 200, "message": '删除成功' })
  )

})


module.exports = router;

在app.js 里配置解析post代码  //必须引入连接数据库的文件


const bodyParams = require('body-parser')//解析post数据
// //引入数据库链接
require('./model/modelConncet')


//跨域



//写到路由上面顺序  解析路由数据***
app.use(bodyParams.urlencoded({ entends: false }))
//解决请求数据过大出现403错误
app.use(bodyParams.json({ "limit": "10000kb" }))



//路由配置  再带
app.use('/', indexRouter);
app.use('/users', usersRouter);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值