微信小程序用云函数连接自己服务器上的MySQL数据库
做这个东西之前,我在网上搜了好久,啥都没发现,都是用腾讯云数据库实现的,还有的是用php或者jsp写一个servlet,但是我认真查看微信小程序文档之后,我发现可以用云函数来实现。以下都是原创,摸索一天了。。。。第一步,打开微信开发工具然后在cloudffunctions里面,新建Node.js云函数(腾讯会送你一个内存很小的服务器,云函数可以跑在上面,可以完成性能不需要太大的服务)...
做这个东西之前,我在网上搜了好久,啥都没发现,都是用腾讯云数据库实现的,还有的是用php或者jsp写一个servlet,但是我认真查看微信小程序文档之后,我发现可以用云函数来实现。
以下都是原创,摸索一天了。。。。
第一步:配置云函数并调用
然后在cloudffunctions里面,新建Node.js云函数(腾讯会送你一个内存很小的服务器,云函数可以跑在上面,可以完成性能不需要太大的服务)
比如说我们新建一个叫mysql的云函数
然后编辑index.js
代码我放在这里,转载请注明出处。。
// 云函数入口文件
const cloud = require('wx-server-sdk')
//引入mysql操作模块
const mysql = require('mysql2/promise')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
try {
const connection = await mysql.createConnection({
host: "IP地址",
database: "数据库名",
user: "root",
password: "密码"
})
const [rows, fields] = await connection.execute('MySQL语句')
return rows;
} catch (err) {
console.log("链接错误", err)
return err
}
}
然后右键你这个mysql,选择在终端打开
然后运行
npm install mysql2
ps:如果你显示找不到npm,,,那么你需要慢慢来,百度以下安装npm,这大约会花费你一个小时的时间
然后右键你的云函数,点击上传并部署:云端安装依赖
做到这里,云函数就算完事了
然后可以在云端测试一下
点击云开发-》云函数-》点击云端测试
然后就用他的模板测试就行,看一看返回值,如果报错,请检查mysql连接
这是正常的测试结果
然后写到这里,云函数就算完事了。
第二步:开始写云函数的调用
我定义了一个button,来设置监听调用这个云函数,然后我data里面有dis,hum,temp和time四个属性,我需要把他们提取出来,并且显示出来
然后我在index.wxml中写了几个view,button
代码如下
<!--index.wxml-->
<view class="container">
<view class="title">实时温湿度及距离</view>
<text decode> </text>
<view class="status">距离:{{dis}}</view>
<text decode> </text>
<view class="status">湿度:{{hum}}</view>
<text decode> </text>
<view class="status">温度:{{temp}}</view>
<text decode> </text>
<view class="status">时间:{{time}}</view>
<text decode> </text>
<text decode> </text>
<button type="primary" bindtap="but">获取最新数据</button>
</view>
然后效果如下
然后开始写index.js(这里面有button的function)
代码如下
//index.js
const app = getApp()
Page({
data: {
rows: 'rows',
dis: 'dis',
hum: 'hum',
temp: 'temp',
time: 'time'
},
but: function () { // 通过but点击事件触发后面的函数
let rows = this.rows
let dis = this.dis
let hum = this.hum
let temp = this.temp
let time = this.time
var that = this
console.log("start:")
wx.cloud.callFunction({
name: 'mysql',
data: {
//rows:rows
dis: dis,
hum: hum,
//temp: temp,
//time: time
},
success: res => {
console.log('云函数调用完成')
console.log(res)
let dis = res.result[0].dis
let hum = res.result[0].hum
let temp = res.result[0].temp
let time = res.result[0].time
//let hum = res.result.0.hum
that.setData({ dis: dis})
that.setData({ hum: hum })
that.setData({ temp: temp })
that.setData({ time: time })
},
fail: err => {
console.error('云函数调用失败')
}
})
},
})
然后你运行的时候,会返回一个res到你的console,然后你可以看看这个详情
看到这个result里面,有一个0,这个0里面,就是要提取的数据,正常来说,这个let dis = res.result[0].dis这个地方应该写成
let dis = res.result.0.dis,,,但是这是不对的,不能出现0,会报错,我当时卡了半天,然后我问了以下老师,她说她也没见过,然后她试了一下,告诉我要把数字放到[ ]里面。。。。(特别注意,网上搜不到。。。卡在这里很难受)
然后代码就这些
就可以测试了,你要根据你自己的数据库来,我连数据库是根据我自己情况来的,你自己改变量,很简单。
更多推荐
所有评论(0)