微信小程序云函数操作云数据库Mysql
云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。 小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
一、node安装
去官网http://nodejs.cn/download/下载。 window8之前的版本,https://nodejs.org/dist/选择版本下载。
创建工程->使用云环境 得到以下工程目录 在cloudfunctions,右击插入云函数mysql-l 在mysql-l右击在终端打开,运行npm install mysql2命令。 安装过程中如没有完整安装,需删除已安装的云函数、已上传的云函数、C:Users***AppDataRoaming pm pm-cache这个目录,后按照上面的操作重新新建云函数
首先四个都会下载js包到moudles里面,只是package.json里面不同(这个内容复制) npm install 安装所有依赖 npm install --production 安装生产依赖 npm install xx --save 安装XX到生产环境依赖 npm install --save-dev 安装XX到开发环境依赖
三、代码 在云函数index.js中
const cloud = require(wx-server-sdk) cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV, }) const mysql = require(mysql2/promise); exports.main = async (event, context) => { try { const connection = await mysql.createConnection({ host: "你的ip", //内网ip地址 user: "root", //数据库的用户名 password: "密码", //数据库密码 database: "******", //数据库名称 port:"******",默认不用这项 }) const [rows, fields] = await connection.query( SELECT * FROM `ghjgxx` WHERE `bh` = ?,[event.bh] ); connection.end(function(err) { //注意要断开连接,不然尽管获取到了数据,云函数还是会报超时错误 console.log(断开连接) }); console.log(rows) console.log(fields) return rows } catch (err) { console.log("连接错误", err) return err } }
(1)测试云函数
右击mysql-l,选择上传并部署:云端安装依赖(不安装node_modules),点击云开发→点击云函数→点击云端测试,运行测试。(上述云函数更改查询即可测试)
(2)调用云函数
通过事件event传值云函数查询。
Page({ data:{ bh:, jg: }, weizhiInput1: function (e) { this.setData({ bh: e.detail.value }) }, cx() { var that=this wx.cloud.callFunction({ name:"mysql-l", data:{ bh:this.data.bh, }, success: res => { console.log("请求成功!", res) if (res.result.length ==0) { var jg1 =无该分类结果 } else { var jg1 = res.result[0].jg; } this.setData({ jg:jg1 }) }, fail: err => { console.log("请求失败!",res) } }) } })
wxml代码
<view> <text>位置分类:</text> <input class="weui-input" auto-focus placeholder="输入位置" bindinput="weizhiInput1" /> </view> <button type="primary" bindtap="cx">查询显示</button> <text>>查询结果</text> <view>{ {jg}}</view>