微信小程序使用云函数进行mysql操作
其他操纵数据库方式的一些问题
现在使用小程序,对数据库的选择一般有两种:小程序云数据库或者外部mysql数据库。
云数据库虽然方便,但其劣势在于其他终端(网页等)对云数据库访问需要请求access_token;
我们知道小程序对外链管理非常严格,mysql数据库需要通过服务器上跑php脚本来进行操作,对于没怎么学过php的菜鸟本渣,确实有点过于难了。
最近在一个大佬的基础上,把连接mysql数据库的操作封装进了云函数,在js中只需要请求云函数,带着sql语句即可获取返回值。
参考链接:微信小程序云开发连接mysql数据库,小程序云函数操作mysql数据库
准备工作
上面的链接里面都已经说的很详细了,这里就简单说一下:
首先需要注册小程序的时候选云开发小程序;
然后电脑需要安装node.js并添加进环境变量;
需要在app.js对云环境进行初始化;
新建的云函数安装mysql2依赖;
云函数需要部署在云端才能生效;
云函数代码
// 云函数入口文件
const cloud = require('wx-server-sdk')
//引入mysql操作模块
const mysql = require('mysql2/promise')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
//外部参数传入的数据在event里面,把其中的sql语句存下来
var sql = event.sql;
try {
const connection = await mysql.createConnection({
host: "自己mysql数据库的ip地址",
database: "数据库名字",
user: "权限账号",
password: "权限密码"
})
const [rows, fields] = await connection.execute(sql)//sql操作数据库
return rows;
} catch (err) {
console.log("链接错误", err)
return err
}
}
调用云函数时候的代码
wx.cloud.callFunction({
name:'mysql',//云函数名称
data:{
sql : 'INSERT INTO `表名`(列名) VALUES(\''+值+'\')'//sql插入语句
},
success: res=>{
console.log(res)
},
fail: err =>{
console.log('[云函数] [db-operator] 调用失败',err)
}
})
最后还需要注意的一些小事情:
sql语句在小程序里面写的时候一定要理清楚几层 ’ ’ ’ 之间的关系;
擅于使用console.log()发现问题在哪;
祝大家成功!
参考链接:
https://blog.csdn.net/qiushi_1990/article/details/98361329?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8Fmysql2&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-98361329.pc_search_result_hbase_insert&spm=1018.2226.3001.4187