VUE+Axios+Nodejs+express+pgsql实现前后数据交互【手摸手(绝对真实!),基础到爆炸!】

1、环境准备(需要安装)

(1)vue-cli3

(2)nodejs

(3)axios

(4)pg

编译器:vscode

2、个人思路

(1)在pgsql里建数据表

(2)利用Nodejs+pg包,读取pgsql的数据

(3)利用Nodejs+express将读取的数据库数据,发送到建立的web服务器里

(4)利用VUE+axios读取web服务器里的数据,并在自己的客户端显示

3、工程目录(红色框内是要用到的目录)

(1)后端目录

VUE+Axios+Nodejs+express+pgsql实现前后数据交互【手摸手(绝对真实!),基础到爆炸!】

(2)前端目录

VUE+Axios+Nodejs+express+pgsql实现前后数据交互【手摸手(绝对真实!),基础到爆炸!】

(3)数据库

VUE+Axios+Nodejs+express+pgsql实现前后数据交互【手摸手(绝对真实!),基础到爆炸!】

4、具体实现

(1)PGsql里创建数据表

这个在网上查询即可,主要就是对于PostgreSQL的安装和使用。

TIPS:可以利用navicat这个数据库管理软件和设计工具,使得数据库操作更加的简单。

(2)利用Nodejs+pg实现数据库数据读取。

我是利用数据池的方式进行连接。

1)db.js

module.exports = {
    pgsql:{
        host: 'localhost',
    port: 5432,
    user: 'postgres',
    password: '123123',
    database: 'BINGDB',
    poolSize: 5
    }
}

2)index.js

const db = require('./db.js')
const pgsql = require('pg');
const express = require('express');
const app = express();
app.listen(8088, () => {
    console.log('fucking 8088!')
})
//设置跨域访问
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();
});
//创建数据池实例
let conn = pgsql.Pool(db.pgsql);
//数据池连接
conn.connect();
//从数据库请求数据
app.get('/', function (req, res) {
    //sql语句(查询)
    let sql_qur = 'select * from "public"."Gov_Manager"';
    //数据库查询query(sql,callback)
    conn.query(sql_qur, function (error, result, fields) {
        if (error) {
            console.log(error)
        }
        //将数据库读取的数据转成JSON格式
        res_send = JSON.stringify(result.rows);
        //将J数据发送到8088端口的服务器
        res.send(res_send)
        //数据读取完了,就把数据库连接关了,也可以release掉(因为我用的是数据池)。
        conn.end();
    })
})



以上我就通过nodejs+express+pg实现了数据库的读取,以及web服务器的创建,还要数据的上传。

(3)利用VUE+axios实现数据后端请求,前端展示

本人利用vue-cli3直接创建工程,然后在脚手架的基础上实现操作。

1)utils/request.js

import axios from 'axios';
//配置axios实例
//URL(绝对的) = baseURL + url(相对的)
const service = axios.create({
    baseURL : "http://127.0.0.1:8088",
    timeout : 5000
})

export default service

2)api/DataOfBing.js

import request from '../utils/request'
//这就是把要请求的URL封装成API,便于管理,输出后是一个promise对象。
//为什么是一个promise对象?因为axios就是在promise的基础上实现的呀。
//封装成了promise对象,就可以直接.then操作了
//fetche函数可以加入param参数,例如下侧:
//export function fetch(param){
//    return request({
//        url : '/',
//        method: 'get',
//        params: param
//    })
//}
export function fetch(){
    return request({
        url : '/',
        method: 'get'
    })
}

3)vue.config.js(vue-cli3中,将对于webpack等的配置均封装隐蔽起来,可以自行新建一个vue.config.js文件,然后在里面进行配置,这样可以覆盖默认的配置。)

此次罪域vue.config.js的操作,主要是加入一个proxy代理服务器,使得能够访问相应的web服务器。

proxy: {
        //'/'是指相对url
            '/': {
                //目标,指向绝对URL。
                target: `http://127.0.0.1:8088`,
                changeOrigin: true,
                pathRewrite: {
                    '^/' : ''
                }
            }
        },

以上就已经实现了全栈开发的配置,即实现了前端+后端+数据库的交互啦

4)axiosCom.vue组件

这些代码没什么好说的,基本的v-for指令,还有一些就是vue的api了,可以通过对官文的查看,了解使用的方法。

主要思路就是:把fetch()函数从后端索取到的数据,向前端展示

<template>
  <ul>
    <li v-for = "user in users" >
      {{ user }}
    </li>
  </ul>
</template>

<script>
import {fetch} from '../api/DataOfBing' 

export default {
  data(){
    return {
      users : []
    }
  },
  mounted(){
    var self = this;
    fetch()
    .then(res =>{
      res.data.forEach(param=>{
        self.users.push(param)
      })
    })
  }
};
</script>

5)App.vue

这个就是把组件加到程序的入口里面去了。

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">

    <axiosCom></axiosCom>
  </div>
</template>

<script>
import axiosCom from './components/axiosCom'

export default {
  name: 'app',
  components: {
    axiosCom,
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

 

上一篇:rehat7.X下postgresql 11编译安装


下一篇:postgresql安装