node 获取mysql数据类型_nodejs操作mysql

本文介绍了如何在Node.js中连接MySQL数据库,处理连接问题,以及如何将JSON数据存储到数据库并进行分页查询。首先,通过npm安装mysql驱动,然后建立连接,解决不支持的认证协议错误。接着展示如何插入和查询数据,实现分页功能,最后通过GET请求返回给客户端。
摘要由CSDN通过智能技术生成

思路。就是在nodejs中,因为我们的目的是客户端发出请求,nodejs服务端需要根据这个请求,返回json数据。也就是说,我们要在服务器端完成连接数据库的任务,获取数据库中的json类型的数据。所以首先处理nodejs连接mysql数据库的问题,接着是对数据库中的数据进行数据处理的问题,最后返回数据给客户端。

1. 安装mysql驱动(模块)

npm install mysql

2. nodejs连接mysql数据库

database.js中的代码

let mysql = require('mysql');

//创建连接

let connection = mysql.createConnection({

host:'localhost',

user:'root',

password:'自己数据库的密码',

database:'自己创建数据库的名称',

});

//连接数据库

connection.connect(function(err){

if(err) {

return console.log('err:'+err.message);

}

console.log('success!connect to local mysql');

});

问题:err:ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

解决方案:

因为之前使用alter user 'root'@'localhost' identified by '用户密码';修改密码,这种加密方式是mysql8.X版本支持的默认方式,称为“caching_sha2_password”。但是nodejs中的mysql模块并不支持这种加密方式。

使用mysql模块支持“mysql_native_password”的加密方式,重新修改密码。

alter user 'root'@'localhost' identified with mysql_native_password by '用户密码';

3. 将json类型的数据存储到数据库中,以及获取存储到数据库中的数据

processdata.js中的代码

let connect=require('./database');

//console.log(connect);

let fs =require('fs');

let path = require('path');

//插入数据到mysql

exports.insertData=function(){

var fileurl=path.join(__dirname,'../db/goodlist.json');

fs.readFile(fileurl,'utf-8',function(err,data){

if(err){

res.send('文件读取失败');

}

var json_data=JSON.parse(data).message;

for (let i=0;i

var singlegood=json_data[i];

console.log(singlegood);

const sql = `insert into goodlist values(${JSON.stringify(singlegood)});`;

connect.query(sql,(err,result,fields)=>{

if(err){

throw err;

}

console.log(result);

});

}

});

};

//insertData();

//分页查询数据库

exports.selectData=function(page,callback){

var fileurl=path.join(__dirname,'../db/from_sql_good.json');

var size = 4;

var skip = (page-1)*size;

//模板字符串

const sql = `select * from goodlist limit ${skip},${size};`;

// const sql = `select * from goodlist;`;

connect.query(sql,(err,result,fields)=>{

if(err){

throw err;

}

//result是一个数组,这个数组由RowDataPacket对象组成,每个RowDataPacket对象包含对象singlegood。

// console.log(result);

var newMessage=[];

//遍历result

for (const row of result) {

const obj = JSON.parse(row.singlegood);

// console.log(obj);

newMessage.push(obj);

}

var newGoodlist=JSON.stringify({

status:0,

message:newMessage

});

// console.log('processdata===='+newGoodlist);//输出

callback(newGoodlist);

// fs.writeFile(fileurl,newGoodlist,function(err,data){

// if(err){

// console.log('err');

// }

// console.log('success!');

// });

});

};

//selectData();

4. get请求返回给客户端分页查询到的数据

//获取商品列表

router.get('/getgoodlist',function(req,res){

//console.log(req.query);

var pageNumber=req.query.pageNumber;

//console.log(pageNumber);

processdata.selectData(pageNumber,function(newGoodlist){

// console.log('callback===='+newGoodlist);

//使用回调函数获取分页查询到的数据!!!!!!

var data=JSON.parse(newGoodlist);

// console.log('data===='+newGoodlist);

res.send(data);

});

});

好的,你的第一个问题是关于 node.js 和 MySQL 插入语句的语法错误提示,是吗? 首先,你需要确保你的 MySQL 语句的语法是正确的。MySQL 插入语句的基本语法如下: ``` INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` 其,`table_name` 是你要插入数据的表的名称,`column1, column2, column3` 是你要插入的列的名称,`value1, value2, value3` 是你要插入的值。 在 node.js ,你可以使用 `mysql` 模块来连接和操作 MySQL 数据库。下面是一个示例代码,演示如何使用 `mysql` 模块来插入数据MySQL 数据: ```javascript const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'mydatabase' }); connection.connect((err) => { if (err) throw err; console.log('Connected!'); const sql = "INSERT INTO customers (name, address) VALUES ('John Doe', 'Highway 71')"; connection.query(sql, (err, result) => { if (err) throw err; console.log('1 record inserted'); connection.end(); }); }); ``` 在上面的代码,我们创建了一个 `mysql` 连接对象 `connection`,并在连接成功后,使用 `connection.query()` 方法来执行 MySQL 插入语句。 如果你使用类似上面的代码来执行 MySQL 插入语句,但是仍然遇到语法错误提示,那么你需要检查你的 MySQL 语句是否正确。你可以尝试在 MySQL 命令行执行你的 MySQL 语句,以确保它没有语法错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值