作为一个正在学习后端常识的菜鸟,最后存储数据的形式是通过 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.jsexports.mysql = { enable: true, package: 'egg-mysql',};
配置数据库信息
// config/config.${env}.jsexports.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;
最初
终于在一直地尝试后,连贯上了近程数据库,开始了数据冒险之旅。