作为一个正在学习后端常识的菜鸟,最后存储数据的形式是通过 fs 模块存到本地的 JSON 文件中的。起初感觉太 low 还是得用上 mysql。
服务器 mysql 装置
我是在腾讯云的宝塔面板界面化装置的,本地装置能够去这里下载并装置。装置实现后,试了一些命令确定装置胜利。
# 查看 mysql 的状态
$ systemctl status mysqld
# 启动 mysql
$ systemctl start mysqld
# 应用 root 权限登录 mysql
$ mysql -u root -p
题外话,忽然想起来无论是 nginx 还是 mysql 的启动和查看状态都是用的 systemctl 命令。
$ systemctl start nginx
$ systemctl status nginx
mysql 连贯
我的 node 我的项目用到的是 egg.js。文档十分敌对,很粗疏的阐明了如何连贯数据库,详见 MySQL – Egg。
装置依赖库
$ npm i --save egg-mysql
开启插件
// config/plugin.js
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
配置数据库信息
// config/config.${env}.js
exports.mysql = {
// 单数据库信息配置
client: {
// host
host: 'mysql.com',
// 端口号
port: '3306',
// 用户名
user: 'test_user',
// 明码
password: 'test_password',
// 数据库名
database: 'test',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认敞开
agent: false,
};
遇到的问题
无法访问近程服务器
发现是我的腾讯云服务器的 3306 端口未凋谢,关上之后就好了。
找不到 ip 地址
我在配置 host 的时候多加了 http://
前缀,导致报错。查了材料后才晓得只有 IP 号或者域名即可。
host: '101.33.37.187',
用户名写错
一开始用了 yang@localhost 这个用户名,起初发现 @localhost 后缀并不需要。
写一个 service 验证
const Service = require("egg").Service;
class DoneService extends Service {async findAll() {
// 如果 咱们拿到用户 id 从数据库获取用户详细信息
const user = await this.app.mysql.query("SELECT * FROM `done-tasks` WHERE 1", "");
return {user};
}
}
module.exports = DoneService;
最初
终于在一直地尝试后,连贯上了近程数据库,开始了数据冒险之旅。