小程序云开发
# 云开发
- 使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。
- 云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。
- 注意权限配置:所有的云开发都设置为所有用户可见。
# 配置云开发环境
- 先创建文件夹cloud
- 配置project.config,json文件
- 之后文件夹有朵云
"cloudfunctionRoot": "cloud/",
1
# 云开发初始化
- 在cloud文件夹下创建好要使用的云函数,直接创建文件夹就好了
- 写在app.js的onLaunch方法中
//云开发环境的初始化
wx.cloud.init({
env: "abc-7g742zsa5e0d63a6",
traceUser: true
})
1
2
3
4
5
2
3
4
5
# 云数据库
- 云数据库最多只能请求20条数据
- get获取数据库中的数据
- add添加数据
//获取数据库list表
const DB = wx.cloud.database().collection("list")
//获取数据库中的数据
DB.get({
success: res => {
console.log("请求成功", res)
this.setData({
dataList: res.data
})
console.log(this.data.dataList)
},
fail: err => {
console.log("请求失败", res)
}
})
// 添加意见信息到数据库list表
DB.add({
data: {
avatarUrl: that.data.avatarUrl,
name: that.data.nickName,
content: that.data.content,
date: that.data.dateTime
}, success(res) {
console.log("添加成功", res)
}, fail(err) {
console.log("添加失败", err)
}
})
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
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
# 云函数获取数据库
- 云函数获取数据库的数据最多能请求100条数据
- 新建node.js云函数,云函数的js文件,例如文件名为getList
- 最后还要云端安装依赖
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
//通过时间的先后顺序检索
//return result = cloud.database().collection("list").orderBy('date','desc').get({
return result = cloud.database().collection("list").get({
success:res=>{
return res
},
fali:err=>{
return err
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 要调用的js文件
wx.cloud.callFunction({
name:"getList",
success:res=>{
console.log("请求云函数成功",res)
this.setData({
dataList:res.result.data
})
},
fail:err=>{
console.log("请求云函数失败",err)
}
})
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
onLoad() {
//获取用户的信息
const nickName = this.data.nickName;
const avatarUrl = this.data.avatarUrl;
wx.getUserInfo({
success: res => {
this.data.nickName = res.userInfo.nickName
this.data.avatarUrl = res.userInfo.avatarUrl
this.setData({
nickName: this.data.nickName,
avatarUrl: this.data.avatarUrl
})
}
})
// 检查用户是否微信授权
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 通过云函数获取数据库中的数据
wx.cloud.callFunction({
name:"getList",
success:res=>{
console.log("请求云函数成功",res)
this.setData({
dataList:res.result.data
})
},
fail:err=>{
console.log("请求云函数失败",err)
}
})
// 获取数据库中的数据
// DB.get({
// success: res => {
// console.log("请求成功", res)
// this.setData({
// dataList: res.data
// })
// console.log(this.data.dataList)
// },
// fail: err => {
// console.log("请求失败", res)
// }
// })
} else {
// 用户未授权,提示用户授权
wx.showLoading({
title: '请先登录...',
})
setTimeout(() => {
wx.hideLoading({
complete: (res) => {
console.log("已关闭")
wx.switchTab({
url: '../user/index',
})
},
})
}, 1200);
}
}
})
},
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
- 云函数获取数据库中的数据按时间的先后排序
- 比如你的集合中,有个字段为时间,现要按照最近时间的数据先获取出来。这时候,就要在条件中加入orderBy方法
db.collection('dynamic').orderBy('sendTime','desc').get()
1
2
2
# 云存储
- 用来存储图片和视频,直接上传到云存储中即可
- 可以调用云地址获取数据
<image class="image" src="cloud://abc-7g742zsa5e0d63a6.6162-abc-7g742zsa5e0d63a6-1303875094/record/more.jpg"></image>
1
# 云函数获取openid
云函数login中
// 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
普通按钮
<button bindtap="getOpenid">获取openid</button>
getOpenid() {
wx.cloud.callFunction({
name: 'login'
}).then((res) => {
console.log(res)
})
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
注意:openid 在小程序和公众号下是不一样的,unionid 在小程序和公众号下都是一样的
编辑 (opens new window)
上次更新: 2021/08/03, 15:55:12