使用ndoe實現自動化完成增刪改查接口

使用ndoe實現自動化完成增刪改查接口

最近工作內容比較繁瑣,手里需要開發的項目需求比較多,常常在多個項目之間來回切換,有時候某些分支都不知道自己開發了什么、做了哪些需求,
使用手寫筆記的方式去記錄分支到頭來也是眼花繚亂,作為前端工作3年的弟弟想著為啥不能自己直接將這些數據存在數據庫里,實現一個增刪改查的日常工作記錄管理呢?
說干就開始搞!!!

  • 🔴 1、 首先我們先安裝mysql數據庫

    • 🟢 1.1、這個就直接搜一個教程即可:mac電腦mysql數據庫安裝教程

    • 🟢 1.2、有時候忘記mysql的密碼了。怎么重置一下呢?咳咳!我這邊是卸載了一遍重新安裝了一下 mac使用brew安裝mysql

    • 🟢 1.3、完成數據庫的安裝,能正常啟動我們即可進入正題

  • 🔴 2、安裝Navicat Premium Lite 是一款免費的數據庫管理工具

    • 🟢 2.1、Navicat Premium Lite安裝教程 數據庫的可視化工具免費的哦,

      img

    • 🟢 2.2、我們新建一個連接,連接到我們的數據庫,連接成功之后,我們新建一個數據 名字你隨便,然后我們新建表,我們在上面的新建查詢中執行

      CREATE TABLE `daily_record` (`id` INT(11) NOT NULL AUTO_INCREMENT,`daily_tag` VARCHAR(255) NOT NULL,`daily_remark` VARCHAR(255) NOT NULL,`status` VARCHAR(255) NOT NULL,`create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,`git_name` VARCHAR(255) NOT NULL,PRIMARY KEY (`id`)
      );
      
    • 🟢 2.3、我們的表就創建完成了,接下來我們就可以使用node連接我們這個數據庫去實現一些增刪改查的操作了

  • 🔴 3、使用node實現增刪改查

文件結構

img

  • 🟢 3.1、連接數據建立連接池,首先我們安裝我們后面需要的依賴,我們在package.json文件中添加一下依賴項
       "body-parser": "^1.20.2","express": "^4.19.2","mysql": "^2.18.1","mysql2": "^3.9.6"
執行`yarn` 安裝完成之后,我們新建一個數據庫連接池:
     // initDatabase.js
const mysql = require('mysql2/promise');
const pool = mysql.createPool({host: 'localhost',user: 'root',password: '12345678',database: 'dev_database',connectionLimit: 10
});module.exports = pool;
  • 🟢 3.2、完成我們的獲取數據庫的接口、新增接口
 const pool = require('../../service/initPool/init');
async function getDaily(req, res) {try {const [rows] = await pool.query('SELECT * FROM daily_record');res.json(rows);} catch (error) {res.status(500).json({ error: 'Error retrieving users' });}
}async function getDailyById(req, res) {const { id } = req.params;try {const [rows] = await pool.query('SELECT * FROM daily_record WHERE id = ?', [id]);if (rows.length === 0) {res.status(404).json({ error: 'not find' });} else {res.json(rows[0]);}} catch (error) {res.status(500).json({ error: 'Error getting daily_record by ID' });}
}module.exports = { getDaily, getDailyById };
 const pool = require('../../service/initPool/init');
async function addDaily(req, res) {try {const { daily_tag , daily_remark , status , git_name } = req.body;const [result] = await pool.query('INSERT INTO daily_record ( daily_tag , daily_remark , status , git_name ) VALUES ( ?,?,?,? )',[ daily_tag , daily_remark , status , git_name ]);res.status(201).json({ id: result.insertId, message: 'daily_record added successfully' });} catch (error) {res.status(500).json({ error: 'Error adding error' });}
}module.exports = { addDaily };
  • 🟢 3.3、創建我們的服務器部署我們的接口
 // index.js
const express = require('express');
const bodyParser = require('body-parser');
const { getDaily, getDailyById } = require('./dailyRecord/getdaily');
const { addDaily } = require('./dailyRecord/adddaily');
// 引入新增用戶模塊
// 引入其他模塊,如readUser, updateUser, deleteUser等const app = express();
app.use(bodyParser.json());// 設置路由
app.get('/getdaily', getDaily);       // 獲取所有用戶
app.get('/dailyById/:id', getDailyById); // 根據ID獲取用戶
app.post('/adddaily', addDaily);       // 添加用戶// 根據需要設置其他路由,如GET, PUT, DELETE等
// /* 允許跨域 */
app.use((req, res, next) => {res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');next();
});// 啟動服務
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port http://localhost:${PORT}`));

使用node啟動我們的服務

node index.js

訪問 http://localhost:3000/getdaily
img

  • 🔴 4、在我們react -vite 項目中進行配置

    • 🟢 4.1、vite.config 配置代理實現跨于請求
 import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react';export default defineConfig({plugins: [react(),],server: {proxy: {'/api': {target: 'http://127.0.0.1:3000',changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ''),},},},css: {preprocessorOptions: {less: {javascriptEnabled: true, // 開啟Less的JavaScriptEnabled},},},
});
  • 🟢 4.2、接口調用方式
     const getDailyList = (params = {}) => {window.fetch('/api/getDaily').then(async (res) => {const data = await res.json();setDataSource(data);}).catch(() => {setDataSource([]);}).finally(() => {setLoading(false);});};
  • 🟢 4.3、
    最終結果展示
    img

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42736.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode調試教程

VSCode調試 VSCode Debuggers VSCode使用launch.json進行細粒度的控制,可以啟動程序或將其附加到復雜的調試場景中 打開Run and Debug視圖Ctrl Shift D 點擊create a launch.json file,選擇C(GDB/LLDB) 會在工作目錄自動創建.vscode/launch.json文…

【MyBatis】MyBatis 理論 40 問(二)

《MyBatis 理論 40 問》包含以下 2 篇文章: MyBatis 理論 40 問(一)MyBatis 理論 40 問(二) MyBatis 理論 40 問(二) 21.如何獲取生成的主鍵?22.當實體類中的屬性名和表中的字段名不…

influxQL基本語法及常用的聚合函數

InfluxQL(Influx Query Language)是與InfluxDB緊密集成的一種SQL風格的語言,專為處理時間序列數據而設計。其基本語法結構清晰,方便開發者理解和實現。以下是對InfluxQL基本語法及常用聚合函數的簡單介紹: 目錄 一、…

Docker Dockerfile:構建與優化

Docker Dockerfile:構建與優化 簡介 Docker 是一種廣泛使用的容器化技術,它允許開發人員將應用程序及其依賴環境打包到一個可移植的容器中。Dockerfile 是 Docker 中用于自動化容器鏡像構建的腳本文件。本文將詳細介紹 Dockerfile 的基本結構、指令使用…

【Python】已解決:(MongoDB安裝報錯)‘mongo’ 不是內部或外部命令,也不是可運行的程序

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例及解決方案五、注意事項 已解決:(MongoDB安裝報錯)‘mongo’ 不是內部或外部命令,也不是可運行的程序 一、分析問題背景 在安裝和配置MongoDB時,有…

怎樣在 PostgreSQL 中優化對 UUID 數據類型的索引和查詢?

文章目錄 一、UUID 數據類型概述二、UUID 索引和查詢的性能問題三、優化方案(一)選擇合適的索引類型(二)壓縮 UUID(三)拆分 UUID(四)使用覆蓋索引(五)優化查詢…

一二三應用開發平臺應用開發示例(6)——代碼生成、權限配置、運行效果查看

生成代碼 完成配置工作,接下來就是見證奇跡的時刻~ 返回到實體列表,選中“文件夾”記錄,點擊“生成代碼”按鈕,提示成功后,在項目的output目錄下輸出了平臺基于配置模板產生的各層代碼,在原有后端的基礎上…

Pyserial設置緩沖區大小失敗

文章目錄 問題描述原因分析解決方案 問題描述 使用set_buffer_size()設置緩沖區大小后,buffer size仍為默認的4096 import time import serial ser serial.Serial(baudrate9600, timeout0.5) ser.port COM1 ser.set_buffer_size(rx_size8192) ser.open() while …

windows上部署python3.11

hello,大家好,我是一名測試開發工程師,至今已在自動化測試領域深耕9個年頭,現已將本人實戰多年的多終端自動化測試框架【wyTest】開源啦,在接下來的一個月里,我將免費指導大家使用wyTest,請大家…

歐拉函數.

性質1:質數n的歐拉函數為n-1. 性質2:如果p,q都是質數,那么? ( p ? q ) ? ( p ) ? ? ( q ) ( p ? 1 ) ? ( q ? 1 ) 證明:p,2p....q*p都不與q*p互質,q同理,所以總的不互質個…

JavaEE初階-網絡編程

文章目錄 前言一、UDP與TCP1.1 有連接與無連接1.2 全雙工1.3 可靠傳輸與不可靠傳輸1.4 面向子節流與面向數據報 二、UDP回顯服務器及客戶端編寫三、UDP字典服務器四、TCP回顯服務器及客戶端編寫五、數據序列化的方式5.1 基于行文本的方式傳輸5.2 基于XML的格式5.3 基于json5.4 …

STM32芯片系列與產品后綴解讀

一. 產品系列 STM32單片機是一系列基于ARM Cortex-M內核的32位微控制器,廣泛應用于嵌入式系統中。 STM32系列由STMicroelectronics(意法半導體)開發和生產,并憑借其靈活的設計、豐富的外設和強大的生態系統,成為嵌入式…

咬文嚼字:詞元是當今生成式人工智能失敗的一個重要原因

生成式人工智能模型處理文本的方式與人類不同。了解它們基于"標記"的內部環境可能有助于解釋它們的一些奇怪行為和頑固的局限性。從 Gemma 這樣的小型設備上模型到 OpenAI 業界領先的 GPT-4o 模型,大多數模型都建立在一種稱為轉換器的架構上。由于轉換器在…

Ubuntu24.04清理常見跟蹤軟件tracker

盡量一天一更,不刷視頻,好好生活 打開系統監視器,發現開機有個tracker-miner-fs-fs3的跟蹤程序,而且上傳了10kb的數據。 搜索知,該程序會搜集應用和文件的信息。 刪除tracker 顯示帶tracker的apt程序 sudo apt lis…

ThreadLocal的內存泄漏

什么是內存泄漏 程序在申請內存后,無法釋放已申請的內存空間在定義變量時,需要一段內存空間來存儲數據信息,而這段內存如果一直不被釋放,那么就會導致內存被占用光,而被占用的這個對象,一直不能被回收掉&am…

書生·浦語2.5開源,推理能力再創新標桿

導讀 2024 年 7 月 3 日,上海人工智能實驗室與商湯科技聯合香港中文大學和復旦大學正式發布新一代大語言模型書?浦語2.5(InternLM2.5)。相比上一代模型,InternLM2.5 有三項突出亮點: 推理能力大幅提升,在…

VUE與React的生命周期對比

前言 在前端開發中,Vue和React是兩個非常流行的JavaScript框架,它們各自有著獨特的生命周期機制。了解并熟練掌握這些生命周期,對于開發高效、可維護的前端應用至關重要。本文將詳細對比Vue和React的生命周期,幫助開發者更好地理…

Python | Leetcode Python題解之第222題完全二叉樹的節點個數

題目: 題解: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def countNodes(self,…

好玩的珠璣妙算-加作弊帶概率空間+日志存儲240705mindMaster

Python代碼 import random import time import datetimeNUM_DIGITS 10 #NUM_NON_ZERO_DIGITS 9failFlag 0class Mastermind:def __init__(self, code_length, max_attempts, secret01code, game_id): # def __init__(self, code_length, max_attempts):self.code_length…

【Elasticsearch】Elasticsearch倒排索引詳解

文章目錄 📑引言一、倒排索引簡介二、倒排索引的基本結構三、Elasticsearch中的倒排索引3.1 索引和文檔3.2 創建倒排索引3.3 倒排索引的存儲結構3.4 詞典和倒排列表的優化 四、倒排索引的查詢過程4.1 過程4.2 示例 五、倒排索引的優缺點5.1 優點5.2 缺點 六、倒排索…