更新记录
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 数据库的简易示例,供有需要的开发者参考。
代码很简单,几个注意事项:
- 注意修改代码示例中的 mysql server 地址及鉴权密码
var connection = mysql.createConnection({
host: 'mysql-server-adress',
user: 'root',
password: 'password',
database: 'dbname',
port: 3306
});
- 需提前安装 mysql 依赖,本示例的 node_modules 已内置
- 注意:云函数中不支持异步回调方式,需封装为
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)
}
})
})
}
- 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);
}