Maison  >  Article  >  interface Web  >  Un article pour expliquer comment le nœud encapsule les instructions de traitement MySQL

Un article pour expliquer comment le nœud encapsule les instructions de traitement MySQL

青灯夜游
青灯夜游avant
2023-02-10 19:28:551988parcourir

Comment encapsuler MySQL dans un nœud ? L'article suivant vous présentera comment node.js encapsule les instructions de traitement MySQL. J'espère qu'il vous sera utile !

Un article pour expliquer comment le nœud encapsule les instructions de traitement MySQL

Dans les interfaces précédentes, les instructions de traitement associées étaient généralement écrites directement dans le routage, ce qui entraînait une redondance du code. Aujourd'hui, le framework express est utilisé pour encapsuler les instructions mysql associées.

1. Packages requis

npm i mysql -S
npm i express -S

2. Fichier de connexion MySql

const mysql = require('mysql')function createConnection() {
    const connection = mysql.createConnection({
        host: '',  //地址
        user: '',  //用户名
        password: '',  //密码
        port: '',  //端口
        database: ''  //数据库名
    });
    return connection;}module.exports.createConnection = createConnection;

[Recommandations de tutoriel associées : Tutoriel vidéo Nodejs, Enseignement de la programmation]

3. Fichier d'encapsulation

Présente les fichiers liés à la connexion MySQL pour se connecter à la base de données

const mysql = require('../mysql/mysql')let connection = null;connection = mysql.createConnection();/**
 * 错误消息
 */let bad_msg = {
    code: 500,
    msg: '内部错误!'}/**
 * 成功消息
 */let success_msg = {
    code: 200,
    msg: '操作成功'}const connections = {
    /**
     * 查询方法
     * @param {*} table 表名
     * @param {*} condition 条件
     * @param {*} params 参数
     * @param {*} search 查询条件
     * @returns 
     */
    find(table, condition, params, search = '*') {
        return new Promise((resolve, reject) => {
            let sql = `SELECT ${search} FROM ${table} WHERE ${condition}`
            connection.query(sql, params, (err, result) => {
                if (err) {
                    reject(bad_msg)
                } else {
                    let _ = JSON.parse(JSON.stringify(success_msg))
                    _.data = result                    resolve(_)
                }
            })
        })
    },
    /**
     * 插入方法
     * @param {*} table 表名
     * @param {*} condition 条件
     * @param {*} params 参数
     * @returns 
     */
    insert(table, condition, params) {
        return new Promise((resolve, reject) => {
            const str = "?"
            let _ = str.repeat((condition.split(',')).length)
            let val = (Array.from(_)).toString()
            let sql = `INSERT INTO ${table}(${condition}) VALUES(${val})`
            connection.query(sql, params, (err, result) => {
                if (err) {
                    reject(bad_msg)
                } else {
                    resolve(success_msg)
                }
            })
        })
    },
    /**
     * 更新方法
     * @param {*} table 表名
     * @param {*} val 值
     * @param {*} condition 条件
     * @param {*} params 参数
     * @returns 
     */
    update(table, val, condition, params) {
        return new Promise((resolve, reject) => {
            let sql = `UPDATE ${table} SET ${val} WHERE ${condition}`
            connection.query(sql, params, (err, result) => {
                if (err) {
                    reject(bad_msg)
                } else {
                    resolve(success_msg)
                }
            })
        })
    },
    /**
     * 删除方法
     * @param {*} table 表名
     * @param {*} condition 条件
     * @param {*} params 参数
     * @returns 
     */
    del(table, condition, params) {
        return new Promise((resolve, reject) => {
            let sql = `DELETE FROM ${table} WHERE ${condition}`
            connection.query(sql, params, (err, result) => {
                if (err) {
                    reject(bad_msg)
                } else {
                    resolve(success_msg)
                }
            })
        })
    },}module.exports = connections

IV. Utilisation

Nous utilisons l'enregistrement de connexion pour démontrer :

const express = require('express')const router = express.Router()const connections = require('../../static/connection')// token生成插件模块const jwt = require('jsonwebtoken');// Token签名var secret = ''const CreatId = require('../../static/ranId')router.post('/user/details', (req, res) => {
    connections.find('user_table', `ID=?`,req.user.ID).then(resp => {
        res.send(resp)
    })})router.post('/api/login', (req, res) => {
    connections.find('user_table', 'user=?', req.body.user).then(resp => {
        let {data} = resp        if (data.length !== 0) {
            for (let i = 0; i < data.length; i++) {
                // 邮箱或者密码不正确的时候
                if (req.body.user !== data[i].user || req.body.pwd !== data[i].pwd) {
                    res.send({
                        code: 202,
                        msg: &#39;用户名或密码有误!&#39;
                    })
                } else {
                    // 邮箱和密码输入正确
                    if (req.body.user === data[i].user && req.body.pwd === data[i].pwd) {
                        // 传输的token内容
                        let token = jwt.sign({ ID: data[i].ID }, secret, { expiresIn: &#39;72H&#39; });
                        // 返回结果
                        res.send({
                            code: 200,
                            msg: &#39;操作成功!&#39;,
                            token: &#39;Bearer &#39; + token,
                        })
                    }
                }
            }
        } else {
            res.send({
                code: 400,
                msg: &#39;账号不存在请注册!&#39;
            })
        }
    }).catch(e => {
        res.send(e)
    })})router.post('/api/register', (req, res) => {
    connections.find('user_table', 'user=?', req.body.user).then(resp => {
        if (resp.data.length > 0) {
            res.send({
                code: 202,
                msg: '该用户已经存在!'
            })
        } else {
            let _ = req.body            let id = CreatId(3) + CreatId(3)
            connections.insert('user_table', 'ID,user,pwd,avatarUrl,location,RegisterTime,isAdmin,isDel', [id, _.user, _.pwd, '/static/userimg/user.webp', _.location, Date.now(), 0, 0]).then(resps => {
                // 传输的token内容
                let token = jwt.sign({ ID: id }, secret, { expiresIn: '72H' });
                // 返回结果
                res.send({
                    code: 200,
                    msg: '操作成功!',
                    token: 'Bearer ' + token,
                })
            })
        }
    })})module.exports = router

Pour plus de connaissances sur les nœuds, veuillez visiter : Tutoriel nodejs !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer