作为一个正在学习后端常识的菜鸟,最后存储数据的形式是通过 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;

最初

终于在一直地尝试后,连贯上了近程数据库,开始了数据冒险之旅。