美文网首页
egg.js 连接远程服务器

egg.js 连接远程服务器

作者: VioletJack | 来源:发表于2023-02-10 08:57 被阅读0次

今天试着把项目的数据存储从 json 文件转到 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。文档非常友好,很细致的说明了如何连接数据库。

安装依赖库

$ 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.183',

用户名写错

一开始用了 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;

最后

终于在不断地尝试后,连接上了服务器,即将插入第一条数据。后面多练习练习 mysql 语句。

相关文章

网友评论

      本文标题:egg.js 连接远程服务器

      本文链接:https://www.haomeiwen.com/subject/nihckdtx.html