更新记录

0.1.1(2020-08-01) 下载此版本

修复 Promise 封装不严谨的Bug

0.1.0(2020-05-30) 下载此版本

初始化提交


平台兼容性

阿里云 腾讯云 支付宝云
×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


uniCloud自带的数据库是经过改良的MongoDB。

云函数是node环境,也是可以连接其他mysql服务器的,但由于和云函数不在一个内网环境,连接速度会比自带的改良MongoDB慢。

另外,uniCloud自带的改良MongoDB的功能也是远强于mysql的,包括clientDB、JQL的易用性和效率提升,也是mysql比不了的。

所以不推荐在正式应用中使用云函数连接mysql。本插件主要适用于导入数据。

在HBuilderX中用本地运行的云函数连接mysql(将HBuilderX部署在mysql服务器内网会有更快的速度),然后读取数据并写入到uniCloud自带的数据库中,完成数据导入。

下面是在云函数中连接 mysql 数据库的简易示例,供有需要的开发者参考。

代码很简单,几个注意事项:

  1. 注意修改代码示例中的 mysql server 地址及鉴权密码
var connection = mysql.createConnection({
    host: 'mysql-server-adress',
    user: 'root',
    password: 'password',
    database: 'dbname',
    port: 3306
});
  1. 需提前安装 mysql 依赖,本示例的 node_modules 已内置
  2. 注意:云函数中不支持异步回调方式,需封装为 Promise调用
/**
 * 封装mysql执行操作为Promise
 * 
 * @param {Object} sql
 * @param {Object} values
 */
const query = function(sql, values) {
    return new Promise((resolve, reject) => {
        connection.query(sql, values, (error, results, fields) => {
            if (error) {
              reject(error)
            }else{
              resolve(results)
            }

        })
    })
}
  1. mysql 的增删改查示例如下,更多 mysql 用法参考:https://github.com/mysqljs/mysql
try {
    //连接数据库
    connection.connect()

    // 新增记录
    let addRes = await query('insert into users set ?', {
        name: '丁元英',
        age: 40
    })
    console.log("新增记录:", addRes)

    // 删除记录
    let delRes = await query('delete from users where name=? ', ['韩楚风'])
    console.log("删除记录:", delRes)

    //修改记录
    let updateRes = await query('update users set age=? where name=? ', [50, '丁元英'])
    console.log("修改记录:", updateRes)

    //查询记录
    let queryRes = await query('select * from users where name=? ', ['丁元英'])
    console.log("查询记录:", queryRes)

    //关闭连接
    connection.end();
} catch (e) {
    console.log('操作失败,失败信息 ', e);
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件会连接使用者的mysql服务器,不会采集其它数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问