Utilice el nodo para conectarse a la base de datos | Notas del campo de entrenamiento juvenil


tema: condensada-noche-púrpura

resaltado: a11y-oscuro

Este es el día 15 de mi participación en la actividad de creación de notas complementarias "Quinto campo de entrenamiento juvenil"

instalar el módulo

npm expreso -S

npm i body-parser -S // analizar el complemento del parámetro de solicitud posterior

modelo de datos

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

Configurar los parámetros de solicitud de publicación

aplicación.use(bodyParser.urlencoded({ extendido: falso })) aplicación.use(bodyParser.json())

base de datos

Los datos aquí se almacenan en la memoria del servidor. Si la cantidad de datos es demasiado grande, consumirá mucha memoria del navegador, lo que afectará el rendimiento del servidor e incluso provocará que el servidor se paralice, por lo que los datos deben guardarse en la base de datos.

usar

instalar complemento

npm i mysql2 -S

puesta en marcha

Inicie mysql en la terminal -uroot -p123456

Ver base de datos mostrar bases de datos;

Conéctese a la base de datos

Introducir:const mysql = require('mysql2')

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

Crear ejecución de tabla en la terminal

Primero ingrese la base de datos a operar para 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;` mostrar la tabla show tables

Insertar datos en la base de datos.

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

Si los datos son de tipo carácter, deberás utilizar comillas simples o dobles, como por ejemplo: “valor”.

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 }) } })

Error: la columna 'userId' no puede ser nula
Solución: se escribe una clave incorrecta al pasar parámetros

Consultar historial de chat

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

Utilice Promise para encapsular operaciones de bases de datos

En el futuro, es posible que realicemos varias capas de operaciones en la base de datos, una capa tras otra, lo que provocará un infierno de devolución de llamada. En este momento, el código es difícil de leer, por lo que es necesario realizar una encapsulación de promesa y convertirla en una operación sincrónica. ```js // Encapsular 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 }) }) ```

Supongo que te gusta

Origin blog.csdn.net/weixin_50945128/article/details/129377934
Recomendado
Clasificación