如何使用Node.js连接数据库

科技公元 前端 2022-12-13

创建数据库

在前面的文章中我们有手把手使用docker创建数据库,这里就直接沿用之前创建的数据库

首先启动docker,把之前的mysql容器运行起来

然后登入mysql客户端查看一下现有的数据库,以及user表

如何使用Node.js连接数据库

mysql

在前面我们已经使用mysql自带的客户端连接数据库进行一些操作,到了node.js中我们可以用mysql这个npm包来连接mysql数据库,这个包也同样实现了mysql协议

首先安装一下依赖,

pnpm install mysql

复制代码

按照文档配置好连接数据库的参数

const mysql = require('mysql');

const connection = mysql.createConnection({

host: '127.0.0.1',

user: 'root',

password: 'password',

database: 'jym',

port: '2333',

});

connection.connect();

connection.query('SELECT * FROM Users', function (error, results, fields) {

if (error) throw error;

console.log('The solution is: ', results[0].solution);

});

connection.end();

复制代码

运行之后出现了下面这个错误,似乎是mysql这个npm包不支持mysql8导致的,具体可以查看这个issue

'Client does not support authentication protocol requested by server; consider upgrading MySQL client',

没办法,只能换一个npm包试试看了

pnpm uninstall mysql

pnpm install mysql2

复制代码

mysql2的语法和mysql那个基本一样

// get the client

const mysql = require('mysql2');

// create the connection to database

const connection = mysql.createConnection({

host: 'localhost',

user: 'root',

database: 'jym',

password: 'password'

});

connection.connect();

connection.query('SELECT * FROM user', function (error, results, fields) {

if (error) throw error;

console.log('The solution is: ', JSON.stringify(results));

});

connection.end();

复制代码

运行结果如下,可以看到下面的数据和上方使用mysql客户端查出来结果一致

The solution is: [{"name":"jym","age":"1"},{"name":"jym2","age":"2"},{"name":"jym3","age":"3"},{"name":"jym4","age":"4"}]

复制代码

通过mysql2这个包,我们就可以用node.js连接数据库了,可以使用一些基础的API来直接操作mysql数据库;比如上面的代码中就执行了'SELECT * FROM user'这个sql语句

除了使用这种基础库之外,我们还可以使用ORM(对象关系映射器)框架来连接数据库,直接用OOP的方式来编写模型和方法,ORM框架会帮助你生成对应的sql语句,这样就可以把关注点放在业务上面,而不用编写SQL语句。这可以让你的代码更加简洁和可维护

目前在nodejs中常用的ORM有prisma,sequlize,typeorm等等,下回我们就来尝试一下如何用ORM来连接数据库

Apipost 私有化火热进行中

评论