node 路由模块化、连接数据库(使得数据分页功能),以及配合前端element-ui分页组件,上传文件

index.js 主要的

var express = require('express');
// 使用express框架
var app = express()

// 跨域
app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", '3.2.1');
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

// 引入模块
const list = require('./router/list')
//将路由对象与请求地址匹配
app.use("/list",list)


// 启动服务器监听端口
var server = app.listen(8080,'127.0.0.1',function(){
    var host = server.address().address
    var port = server.address().port
    console.log('端口为:http://%s:%s',host,port);
})

连接数据库 单独拿个文件出来

// 创建连接mysql数据库
var sql = require('mysql');
var con = sql.createConnection({
    host: 'localhost', // 主机
    user: 'root', //用户名
    password: '123456', //密码
    database: 'list', //数据库名
    port: '3306', //端口
    multipleStatements: true, // 可以同时执行多条语句
})
// 连接打开数据库
con.connect()
module.exports = con

单独的模块js 对应的是上面的list.js

var con = require('../mysql/index')
//user.js
const express = require("express")
//创建一个路由对象
const user = express.Router()

//创建二级路由
user.get("/list",(req,res)=>{
    if (req.method == "POST") {
        param = req.body;
    } else {
        param = req.query || req.params;
    }
    // 一页多少条数据 - 默认为10条
    const pageSize = param.pageSize || 10;
    const start = (param.page - 1) * pageSize;
    // 查询有多少条数据
    // 查出第几页
    // 这里在配置数据库的时候需要加 multipleStatements: true 从而可以做到查询多条语句
    const sql = `SELECT COUNT(*) FROM beautiful ORDER BY id DESC; SELECT * FROM beautiful limit ${pageSize} OFFSET ${start};`
    // 执行一条sql语句:查询表
    con.query(sql,async function(err,results){
        // 计算总页数
        var allCount = results[0][0]['COUNT(*)'];
        console.log(allCount);
        // 查出有多少页
        var allPage = parseInt(allCount) / 10;
        var pageStr = allPage.toString();
        // // 不能被整除
        if (pageStr.indexOf('.') > 0) {
          allPage = parseInt(pageStr.split('.')[0]) + 1;
        }
        var list = results[1];
        res.end(JSON.stringify(
            { 
                msg: '查询成功', 
                code: 200, 
                pages: allPage, 
                page: parseInt(param.page), 
                count: allCount, 
                data: list
            }
        ));
    })
})

module.exports = user

接下来是前端

<template>
  <div class="pa_co">
    <el-table
      :data="tableData"
      style="width: 100%;">
        <el-table-column
            prop="id"
            label="Id"
            show-overflow-tooltip
            width="180">
        </el-table-column>
        <el-table-column
            prop="name"
            show-overflow-tooltip
            label="名称"
            width="180">
        </el-table-column>
        <el-table-column
            prop="img"
            label="图片"
            show-overflow-tooltip
            >
        </el-table-column>
    </el-table>
    <el-pagination
      @current-change="ModelPage"
      :current-page="queryPames.page"
      :page-sizes="[10, 20, 50, 100]"
      :page-size="10"
      layout="total, sizes, prev, pager, next, jumper"
      :total="queryPames.count"
    >
    </el-pagination>
  </div>
</template>

<script>
// 自己封装的axios方法,请求接口的
import { allList } from '../api/List/list'
export default {
    data(){
        return{
            queryPames: {
                page: 1,
                count: 0
            },
            tableData: []
        }
    },
    created(){
        this.Model()
    },
    methods: {
        Model(){
            console.log(this.queryPames);
            allList(this.queryPames).then((res) => {
                console.log(res);
                if(res.code === 200){
                    this.tableData = res.data
                    this.queryPames.count = res.count
                }
            })
        },
        // 分页的点击事件
        ModelPage(value){
            this.queryPames.page = value
            this.Model()
        }
    }
}
</script>

<style>

</style>

上传文件并进行预览

upload.js

var express = require('express')
var router = express.Router()
var multer = require('multer')
const paths = require('path')
const fs = require('fs');

router.post('/image',multer({
    dest: 'upload' // 文件夹路径名字,如果不存在会自动创建 
    // single('file') 对应的是form中type="file" 中的name的名字 name="file"
}).single('file'),function(req, res, next){
    console.log(req.file.path);
    // 将路径拼接起来
    const newname= req.file.path + paths.parse(req.file.originalname).ext
    console.log(newname);
    fs.rename(req.file.path,newname,function(err){
        if(err){
            res.send('上传失败')
        }else{
            res.send({
                file : req.file,
                newname
            })
        }
    })
})

module.exports = router


页面

// http://localhost:8080/upload/image 是接口路径
<form action="http://localhost:8080/upload/image" method="POST" encType="multipart/form-data">
      <input type="file" name="file"/>
      <input type="submit" />
    </form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值