小程序整理–微信小程序云开发步骤明细

最近LOL出了个新模式,下棋的下的太着迷了。这里要谴责一下自己。下次在这样,就bug越来越多。可恶啊……

云开发

  • 微信小程序去年年末出的云开发,可以很方便个人或者小型小程序来开发。前端一个人也可以搞了,目前有免费和收费的标准,可以去官网自行查看;
  • 先创个小程序开通云开发,选择免费的版本。个人可以免费两个;
  • 云开发初始化数据库,云开发连接数据库;
  • 云开发数据库的增删查改;
  • 云函数使用;
  • 云开发调试;
  • 插件的引入使用;

初始化数据库、连接数据库

初始化数据库

先打开云开发的控制台,创建环境后,会找到环境的id。在小程序的最初入口,onLaunch里添加如图代码。这里的env 就是环境id,traceUser是指是否在将用户访问记录到用户管理中,在控制台中可见。
连接数据库就特别简单了。

1
2
const db = wx.cloud.database(); 
//就一行代码 直接在页面的js的文件里 写在最前面。 这个db 就可以后来执行增删查改了。

数据库增删查改

初始化数据库

数据的增改

先在控制台里创建表,小程序里叫集合。这里还是比较简单的 不需要规定字段,你后期插入数据有什么字段,他就有什么字段。创建个集合就好了。这里我创建了几个。

我这是个人正在做的小程序,不需要登录,那我就需要一个欢迎界面,点击的时候我把用户的微信存到数据库中,相当于注册。

但是如果以前登录过的呢,那我就把他的信息更新一下,用户进入小程序的唯一的标识openid是不会变的。但是他可能微信昵称,地理位置变了。

所以思路是获取openid 先查询用户在集合userinfo是否有记录。没有就添加,有就更新其他信息。这里获取openid是通过云函数。下面再讲..

db.collection(‘userinfo’) 就是表示连接到这个集合,.where表示查询 .doc表示更新 .add 就是添加 里面都可以填写各种条件。 这里呢就是data里有啥字段,集合里就是有啥字段。
下面是代码,可以直接粘贴…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const db = wx.cloud.database();
db.collection('userinfo').where({
openid: app.globalData.openid // 填入当前用户 openid
}).get().then(res => {
if (res.data.length == 0) {
db.collection('userinfo').add({
data: {
country: userInfo.country,
province: userInfo.province,
city: userInfo.city,
nickname: userInfo.nickName,
regtime: util.formatTime(new Date()),
lasttime: util.formatTime(new Date()),
openid: app.globalData.openid,
}
}).then(res => {
this.setData({
loadModal: false
})
wx.navigateTo({
url: '../main/main',
})
})
} else {
db.collection('userinfo').doc(res.data[0]._id).update({
data: {
lasttime: util.formatTime(new Date()),
country: userInfo.country,
province: userInfo.province,
city: userInfo.city,
nickname: userInfo.nickName,
}
}).then(res => {
this.setData({
loadModal:false
})
wx.navigateTo({
url: '../main/main',
})
})
}
})

云函数

(我想了半天如何总结,但是还是觉得官方的解释还是比较易懂和完整的。下面是官方的解释,)
一个云函数的写法与一个在本地定义的 JavaScript 方法无异,代码运行在云端 Node.js 中。当云函数被小程序端调用时,定义的代码会被放在 Node.js 运行环境中执行。我们可以如在 Node.js 环境中使用 JavaScript 一样在云函数中进行网络请求等操作,而且我们还可以通过云函数后端 SDK 搭配使用多种服务,比如使用云函数 SDK 中提供的数据库和存储 API 进行数据库和存储的操作。
云开发的云函数的独特优势在于与微信登录鉴权的无缝整合。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,开发者无需校验 openid 的正确性因为微信已经完成了这部分鉴权,开发者可以直接使用该 openid。
因为云函数很方便,比如直接就可以获取openid。如果不用云函数的,想必大家还要传code到后台,在后台去调用微信api才能验证获取openid。这里一个函数直接搞定。
创建云函数
在这里右键可以创建一个云函数,我这里创建了一个getOpenid ,下面是js 代码 是不是很神奇。然后onLaunch里直接 wx.cloud.callFunction 获取openid 我设为了全局变量,因为我基本所有的查询都要用到这个唯一标识。可以看第一张图里有。

1
2
3
4
5
6
7
8
9
10
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {

return event.userInfo
}

云开发调试

network调试
版本要求在1.02.1905302 及基础库 2.7.1 起 就可以在network中看到。
network中选择cloud ,这里就可以看到我的之前代码的云函数的调用和数据库的查改。小程序打开时候就调用了云函数获取了openid,之后我点了界面,显示查询 在是更新了我这次最新时间,国家,省份,昵称。
这个真是太舒服了,很方便调试 (啥时候官方能把伪类也能调试就好了..before after 到现在还不能调试..)

插件的使用

这个需要登录微信小程序后台。在设置-》第三方设置-》添加插件。我这里添加了一个日历。
然后小程序app.json配置。plugins 配置这个插件 版本和插件的id 也就是小程序代码块的id。这个可以在后台添加时候获取到的。然后我在这里全局组件里添加,就可以所有页面使用了。

1
2
3
4
5
6
7
8
"plugins": {
"calendar": {
"version": "1.1.3",
"provider": "wx92c68dae5a8bb046"
},
"usingComponents": {
"calendar": "plugin://calendar/calendar"
},

总结一下

-云开发很方便。但是也有点小问题,就是有时候可能数据库查询 没有被调用,我也不清楚,目前还在找,可能我写的云开发数据查询这块代码还是不够优化。
-云开发因为是微信自家的东西,所以一些东西很方便,比如云函数获取openid,包括云开发去发模板消息、包括定时触发器(后面这两个我后面会更新的)。
-不得不在说一次云函数,这个真的很好用。大家可以看看官方的文档,后面会用到很多。
-云开发方便了简单小程序的开发,像我这样下班时间一个人做做自己东西,也挺有帮助的。大家也可以尝试,甚至可以弄点兼职一个人自己开发一个简单小程序,哈哈 也能赚点小钱。