微信小程序云函数操作云数据库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***\AppData\Roaming\npm\npm-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>