IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Nodejs + oracle + vue 开发记录 -> 正文阅读

[JavaScript知识库]Nodejs + oracle + vue 开发记录

项目结构

首先创建一个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 => {
            // ...
        })
    }
}

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: 2000 // 端口号
}

连接数据库调用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
            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/')
})

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

有问题欢迎留言~

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 07:59:01  更:2022-05-08 08:01:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:58:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码