MySQL
关系型数据库。
使用 mysql 的 connection 连接数据库
准备工作跟下一章节相同。
我们可以使用它来进行查询,查询完成之后会关闭连接。
这种方法较为底层,且每次操作数据库都需要新建数据库连接,若数据库操作需求多,对服务器消耗较大,因此,可以使用第二种连接方式。
const mysql = require("mysql");
const connection = mysql.createConnection({
host: "localhost",
user: "me",
password: "secret",
database: "my_db",
});
connection.connect();
connection.query("SELECT 1 + 1 AS solution", function (err, rows, fields) {
if (err) throw err;
console.log("The solution is: ", rows[0].solution);
});
connection.end();
使用 mysql 建立数据库连接池连接数据库
准备工作
需要下载 MySQL 数据库在电脑上;
项目中下载 mysql2 来辅助连接 MySQL 数据库:
npm install --save mysql2mysql2 就是 mysql 的升级版。
连接数据库
以连接池的方式连接数据库:
database.js
const mysql = require("mysql2"); // 导入mysql2模块
// 创建一个连接池 @1
const pool = mysql.createPool({
host: "localhost", // 连接的服务器的IP地址
user: "root", // 数据库用户
database: "node-complete", // 连接的具体数据库
password: "159638", // 安装时填写的密码
});
// 导出连接池
module.exports = pool.promise(); // @2
@1:连接池方式——每当我们运行一个查询语句时能随时访问它,然后从管理的多个连接池中获取一个新连接,这样就可以同时运行多个查询,因为每个查询都需要自己的连接,并且一次查询完成后连接会交还到连接池中用于新的查询,最后在应用程序关闭时完成连接池。
@2:以 Promise 的方式导出,我们在其他地方使用的时候可以处理异步任务。
获取数据
我们要获取数据库表中的数据,需要使用execute()结合一条数据库语句来实现对数据库中表的操作:
app.js
const db = require('./util/database');
...
// 查询数据库中的products表
db.execute('SELECT * FROM products')
.then(([rows, fieldData]) => {
console.log(rows); // 存储了数据库表中的数据
console.log(fieldData); // 存储数据库表的一些元字段
})
.catch(err => console.log(err));
// 增加一条数据
db.execute(
'INSERT INTO products (title, price, imageUrl, description) VALUES (?, ?, ?, ?)',
[this.title, this.price, this.imageUrl, this.description] // 增加数据字段(与库中的表相对应)
).then(() => {}).catch(err => console.log(err));
使用 sequelize 连接数据库
详情见 sequelize 一章。
MongDB
非关系型数据库。MongoDB 是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的 bson格式,因此可以存储比较复杂的数据类型。
特点:
- 能存储大量的数据;
- 支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,查询速度块;
- 而且还支持对数据建立索引;
使用 mongodb 连接数据库
准备工作
下载 mongodb:
npm instal --save mongodb
准备一个 MongoDB 数据库连接地址,我使用的是云数据库 MongoDB Atlas。
连接数据库
database.js
const mongodb = require("mongodb"); // 引入mongodb
const MongoClient = mongodb.MongoClient; // 新建一个MongoClient用于连接数据库
const mongoConnect = (callback) => {
MongoClient.connect(
// 连接数据库地址
"mongodb+srv://<user>:<password>@cluster0.mnle1m2.mongodb.net/?retryWrites=true&w=majority"
) // @1
.then((client) => {
console.log("Connected!");
callback(client);
})
.catch((err) => {
console.log(err);
});
};
module.exports = mongoConnect;
@1:该 url 是云数据库的地址,其中包含了云数据库存储的用户名和密码。
app.js
const mongoConnect = require('./util/database');
const app = express();
...
mongoConnect(client => {
console.log(client);
app.listen(3000);
});
更多详细信息见 MongoDB 一章。
使用 mongoose 连接数据库
准备工作
下载 mongoose:
npm install --save mongoose
连接数据库
app.js
const mongoose = require('mongoose'); // 引入mongoose
...
mongoose
.connect(
'mongodb+srv://<user>:<password>@cluster0.mnle1m2.mongodb.net/shop?retryWrites=true&w=majority'
) // 连接MongoDB数据库
.then(result => {
app.listen(3000);
})
.catch(err => {
console.log(err);
});
