Utilisez le nœud pour vous connecter à la base de données | Notes du camp d'entraînement des jeunes


thème : condensé-nuit-violet

point culminant : a11y-dark

C'est le 15ème jour de ma participation à l'activité de création de notes d'accompagnement du "Cinquième camp d'entraînement des jeunes".

installer le module

npm j'exprime -S

npm i body-parser -S // analyser le plugin de paramètre de demande de publication

modèle de données

id : 消息的唯一标识,
userId : 用户id,
content : '我是聊天内容' ,
creatTime : 消息创建时间

Configurer les paramètres de demande de publication

app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json())

base de données

Les données ici sont stockées dans la mémoire du serveur. Si la quantité de données est trop importante, cela consommera beaucoup de mémoire du navigateur, affectant les performances du serveur et provoquant même la paralysie du serveur, donc les données doivent être enregistrées dans la base de données.

utiliser

installer le plugin

npm je mysql2 -S

démarrer

Démarrez MySQL dans le terminal -uroot -p123456

Afficher la base de données Afficher les bases de données ;

Connectez-vous à la base de données

Introduire:const mysql = require('mysql2')

connecter:let db = mysql.createConnection({ // 配置 host : 'localhost', // ip地址 port : '3306', // 端口 user: 'root', // 数据库账号密码 password : 123456, database : 'test' // 数据库名字 })

Créer une table exécutée dans le terminal

Entrez d'abord dans la base de données à exploiter pour use 数据库名; `CREATE TABLE IF NOT EXISTS `messege`( `id` INT UNSIGNED AUTO_INCREMENT, `userId` VARCHAR(100) NOT NULL, `content` VARCHAR(40) NOT NULL, `createTime` DATE, PRIMARY KEY ( `id` ) // 主键 )ENGINE=InnoDB DEFAULT CHARSET=utf8;` afficher le tableau show tables

Insérer des données dans la base de données

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

Si les données sont de type caractère, vous devez utiliser des guillemets simples ou doubles, tels que : "valeur".

js // 插入数据 let sql = 'insert into messege set userId=?,content=?,createTime=?' db.query(sql, [req.body.userId,req.body.content, req.body.createTime], (err, result) => { // 回调函数 第一个为返回的错误信息 console.log(result); // ==1 表示数据插入成功 if(result.affectedRows == 1){ res.send({ messege : '数据插入成功', code : 200, data }) } })

Erreur : la colonne « userId » ne peut pas être nulle
Solution : une mauvaise clé est écrite lors du passage des paramètres

Interroger l'historique des discussions

js app.get('/',(req, res)=> { db.query('select * from messege', (err, result) => { // console.log(result); res.send({ messege : '数据获取成功', code : 200, data : result }) }) })

Utiliser Promise pour encapsuler les opérations de base de données

À l'avenir, nous pourrions effectuer plusieurs couches d'opérations sur la base de données, une couche après l'autre, ce qui provoquerait un enfer de rappel. À l'heure actuelle, le code est difficile à lire, nous devons donc effectuer l'encapsulation des promesses et devenir une opération synchrone. ``js // Encapsuler DbUtils.js db .async = {}

// promise封装 db.async.query = (sql, params) => { return new Promise((resolve, reject) => { db.query(sql, params, (err, rows) => { resolve({err, rows}) }) }) } js // TestRouter.js router.get('/test', async (req, res) => { // 同步写法 // 把回调函数变成可异步执行 添加async let out = await db.async.query('select * from admin', [])

res.send({ id : genid.NextId(), out }) }) ```

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50945128/article/details/129377934
conseillé
Classement