Nodejs + oracle + vue 开发记录

目录

项目结构

项目初始化

vue

node


 

项目结构

首先创建一个vue项目,然后在项目根目录下创建server文件夹,放置node文件

项目初始化

vue

api.js

import axios from 'axios';

let base = '/api';

export const requestLogin = params => { return axios.post(`${base}/login`, params).then(res => res.data); };

export const getDetail = params => { return axios.get(`${base}/detail`, { params: params }); };

login.vue

import { requestLogin } from '../api/api';

methods: {
    login() {
        let loginParams = { username: username, password: password };
        requestLogin(loginParams).then(res => {
            // ....
        })
    }
}

detail.vue

import { getDetail } from '../../api/api';

methods: {
    queryDetail() {
        let para = {
	        page: this.page,
	        ...this.queryInfo,
        };
        getDetail(para).then(res => {
            // ...
        })
    }
}

 跨域处理

config/index.js

module.exports = {
  dev: {    
    proxyTable: {
      '/api': {
        target: 'http://xxx.xx.xx.xx:3000/',
        changeOrigin: true,
        pathRewrite: {
          '^api': ''
        }
      }
    },
  }
}

node

安装依赖

npm install express 

npm install cors // 解决跨域

npm install oracledb

app.js

const express = require('express') // 引入 express
const app = express() // 实例一个 express 对象
app.use(require('cors')()) // 解决跨域
app.use(express.json()) // express处理json数据
const Oracledb = require('oracledb');

配置数据库设置

const config = {
    user: 'user', // 用户名
    password: 'password', // 密码
    connectString: 'xxxxx', // 数据库名
    port: 1521 // 端口号
}

连接数据库调用sql查询数据

async function run(res, sql) {
    let connection;
    try {
        // 连接数据库
        connection = await Oracledb.getConnection(config);
        const result = await connection.execute(sql);

        console.log(result) // result为查出来的数据,但数据格式不是平时常见的[{}]数组对象
        // 将数据返回至前端
        res.send(result)
    } catch (err) {
        console.error(err);
    } finally {
        if (connection) {
            try {
                await connection.close();
            } catch (err) {
                console.error(err);
            }
        }
    }
}  

发送请求

app.post('/api/login', (req,res) => {
    const { username, password } = req.body // post 参数在请求体里
    const sql = `select * from user_table where password='${password}' and regname='${username}'`
    run(res, sql)
})



app.get('/api/detail', (req,res) => {
    const { account, name, code} = req.query
    const sql =  `SELECT * FROM  TABLE_DATA T WHERE T.NAME = ${name} AND T.CODE = ${code}`
    run(res, sql)
})

监听端口

app.listen(3000, () => {
    console.log('http://localhost:3000/')
})

附上完整代码

const express = require('express') // 引入 express
const app = express() // 实例一个 express 对象
app.use(require('cors')()) // 解决跨域
app.use(express.json()) // express处理json数据
const Oracledb = require('oracledb');

const config = {
    user: 'user', // 用户名
    password: 'password', // 密码
    connectString: 'xxxxx', // 数据库名
    port: 2000 // 端口号
}

async function run(res, sql) {
    let connection;
    try {
        // 连接数据库
        connection = await Oracledb.getConnection(config);
        const result = await connection.execute(sql);

        formatResult(res, connection, result)
    } catch (err) {
        console.error(err);
    } finally {
        if (connection) {
            try {
                await connection.close();
            } catch (err) {
                console.error(err);
            }
        }
    }
}  

/**
 * 格式化sql查询的数据并返回到前端
 * @param {*} res 将整理好的数据返回到前端
 * @param {*} connection 数据库连接
 * @param {*} result sql查询后的数据
 */
function formatResult(res, connection, result) {
    try {
        const { metaData, rows } = result
        let arr = []
        let total = 0
        rows.forEach(item => {
            let obj = {}
            item.forEach((citem, index) => {
                obj[metaData[index].name] = citem
            })
            total = obj.TOTAL // TOTAL为自己加的字段,数据总数
            arr.push(obj)
        })
        res.send({
            total: total,
            users: arr
        })
    } catch (err) {
        console.error(err);
    }
}

app.post('/api/login', (req,res) => {
    const { username, password } = req.body // post 参数在请求体里
    const sql = `select * from user_table where password='${password}' and regname='${username}'`
    run(res, sql)
})



app.get('/api/detail', (req,res) => {
    const { account, name, code} = req.query
    const sql =  `SELECT * FROM  TABLE_DATA T WHERE T.NAME = ${name} AND T.CODE = ${code}`
    run(res, sql)
})

app.listen(3000, () => {
    console.log('http://localhost:3000/')
})

-------------------------------------

有问题欢迎留言~

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值