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 !
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.
npm i mysql -S npm i express -S
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]
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
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: '用户名或密码有误!' }) } 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: '72H' }); // 返回结果 res.send({ code: 200, msg: '操作成功!', token: 'Bearer ' + token, }) } } } } else { res.send({ code: 400, msg: '账号不存在请注册!' }) } }).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!