云开发
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
注册云开发
打开微信开发者工具,点击云开发,注册,流程简单,输入需要的字段即可。
云数据
添加数据
-
手动输入
选择数据库,点击添加新的集合,输入集合名称。
点击添加新记录,输入字段名和值,id系统自动生成。
最后保存即可。
-
数据导入
点击导入按钮选择需要的数据文件即可。
查询数据
初始化
根据官网指引复制粘贴下方代码。由于整个项目都需要用到云开发,因此写在 App.js
下最为方便。
wx.cloud.init()
获取数据库的引用
根据官网 初始化 ,在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用。以下调用获取默认环境的数据库的引用:
const db = wx.cloud.database()
查询
使用 Promise
风格的代码进行调用。
- db:
database
数据库的意思 collection
:集合
db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
// res.data 包含该记录的数据
console.log(res.data)
})
注意:
如果报错权限错误,要去云开发数据库的权限设置中把仅创建者可读写改为用户可读,创建者可读写。
doc与where
- doc:括号内数据数据表的id,根据id查询单个数据表
- where:括号内填自己想要查询的数据对象
插入数据
通过字段 add
来实现新增。
add() {
db.collection('daodao').add({
data: {
cn:'刀',
en:'dao',
ifSave:0
}
}).then(res=>{
console.log(res);
})
},
删除数据
通过字段 remove
来实现删除。
remove() {
db.collection('daodao').where({cn:'超'}).remove().then(res=>{
console.log(res);
})
},
注意:
用户仅可删除自己新增的数据,不可删除管理员通过云开发新值的数据,会报错,显示没有权限。
修改数据
通过字段 update
来实现修改。
update() {
db.collection('daodao').where({cn:'超'}).update({
data:{
cn:'铁'
}
}).then(res=>{
console.log(res);
})
},
云存储
上传文件
微信小程序最多只能上传2m大小的数据,对于部分很大的视频等文件,可以通过云存储来实现存放。在云服务中,选择云存储,点击上传文件即可。
选择图片
查看官方文档 上传图片,找到关于小程序上传图片的对象示例代码,示例代码如下所示:
wx.chooseImage({
success (res) {
const tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success (res){
const data = res.data
//do something
}
})
}
})
通过示例代码可以得知,我们能够通过 wx.chooseImage
的返回值 res
获取到上传图片的地址,通过这个返回值 tempFilePaths
调用项目的接口可以实现业务。
上传图片到云存储
但是,上述的代码仅仅是上传到后台用接口做交互的,不是上传到云服务上的,因此需要继续寻找。
最终在云开发小程序 官方文档 上,找到了示例代码片段,复制下来,替换掉后台交互的部分。修改图片名称和文件路径(获取到的图片路径是一个数组)
upload() {
wx.chooseImage({
success (res) {
const tempFilePaths = res.tempFilePaths
wx.cloud.uploadFile({
cloudPath: '1.jpg',
filePath: tempFilePaths[0], // 文件路径
}).then(res => {
// get resource ID
console.log(res.fileID)
}).catch(error => {
// handle error
})
}
})
},
最终能够打印出路径,云存储中也存储到了我们上传的图片。
图片显示
获取到了图片路径,我们可以声明一个 image
标签,用一个变量存储路径,显示在页面上。
Page({
/**
* 页面的初始数据
*/
data: {
cloudImage: ''
},
upload() {
let _this = this
wx.chooseImage({
success (res) {
const tempFilePaths = res.tempFilePaths
_this.setData({
cloudImage: tempFilePaths[0]
})
wx.cloud.uploadFile({
cloudPath: '1.jpg',
filePath: tempFilePaths[0], // 文件路径
}).then(res => {
// get resource ID
console.log(res.fileID)
}).catch(error => {
// handle error
})
}
})
}
注意 this
的指向问题!
视频播放
查看官方文档 vedio ,发现其 src
属性支持网络路径、本地临时路径、云文件ID,因此可以直接获取云存储的id值。
<video src="{{vedioMy}}"></video>
data: {
vedioMy: 'cloud://daodao-2gquasxq64f1d808.6461-daodao-2gquasxq64f1d808-1312124232/S03E00.mp4'
},
音频播放
音频播放和视频播放稍微有一点不一样的地方在于,音频标签的 src
属性是不支持云ID的,因此需要打开云存储,右键打开详情,复制地址即可使用。
云函数
创建
-
创建一个文件夹
-
在
project.config.json
文件下设置云函数的文件夹路径{ "cloudfunctionRoot": "cloudfunctionsRoot", }
-
右键文件夹,新建一个云函数
查看云函数的文件,共分为两个部分:
-
入口文件
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init()
-
入口函数
// 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() // 任何一个云函数都需要有一个return返回值 return { event, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, } }
注意:
在云函数中,
console.log()
是没有用的,因为这个是客户端(浏览器)的代码,服务端无法使用,需要return
出去才能使用。
查询数据
复制前面查询数据的代码,由于云函数端(服务器端)没有log语句,因此需要 return
出去。
exports.main = async (event, context) => {
return db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
return res.data
})
}
问题来了,db
哪里来?之前db
我们是用 const db = wx.cloud.database()
声明好的,看一下代码,发现它已经声明好了一个 cloud
,因此我们把 wx.
去掉即可。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
总结:
在云函数中,想要引入云数据
db
,不能添加wx.
前缀,并且,设置变量db
的代码要写在init
初始化之后。在客户端获取
db
,就要加wx.
。
调用云函数
通过 wx.cloud.callFunction
调用云函数获取数据,name属性为云函数的文件夹名称。
yunSearch(){
wx.cloud.callFunction({
name:'nodejs1'
}).then(res=>{
console.log(res);
})
},
云函数传参
同调用一样,都是通过 wx.cloud.callFunction
来调用,不同之处在于传参需要加上 data
对象,对象内是我们需要传参的数据。
add(){
wx.cloud.callFunction({
name:'add',
data:{
a:1,
b:2
}
}).then(res=>{
console.log(res);
})
},
GET
请求
通过云函数发送get
请求,遇事不决先查文档,去看 官网文档 关于云函数如何发送请求,复制示例代码。
wx.request({
url: 'example.php', //仅为示例,并非真实的接口地址
data: {
x: '',
y: ''
},
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
console.log(res.data)
}
})
通过示例代码,我们可以得出几个信息:
- 通过
wx.request
发送网络请求 - 通过
url
设置请求路径 - 通过
data
传递请求参数 - 通过
header
携带请求头 - 通过
success
返回成功函数
修改一下函数,实现我们的业务效果,最终能够返回数据就算成功。
send(){
wx.request({
url: 'https://api.readhub.cn/topic',
method: 'get',
data: {
pageSize:10
},
success (res) {
console.log(res.data)
}
})
},
注意:
如果报错,则需要去详情—本地设置勾选不校验合法域名的选项。
POST
请求
从 get
请求的分析中我们可以得出, post
请求具体发送步骤。在 url
定义路径,通过 data
传参。
send(){
wx.request({
url: 'http://kumanxuan1.f3322.net:8001/auth/loginByWeb',
method: 'post',
data: {
username: 'dao',
password: 'dao'
},
success (res) {
console.log(res.data)
}
})
},
腾讯工蜂
基于Git的企业级协作开发解决方案
初始化
在一开始没有账号的时候,上方会有一个初始化的字样,
点击初始化之后,会跳转到设置页面,需要我们设置邮箱、SSH密钥和密码,如下所示。
其中,SSH Key的设置在 gitee
码云仓库中设置过,过去复制过来即可。保存设置后初始化就算成功,记得保存好自己的账号密码。
克隆项目
初始化成功后可以创建项目,步骤和 gitee
创建仓库一致,不做过多赘述。
创建项目成功后可以尝试克隆一份,复制地址运行命令,会弹出一个弹窗让我们输入账号密码,就是初始化时设置的账号密码,如下所示。
输入正确后最终能够克隆下来一份空的项目文件夹。
推送项目
把项目复制进文件夹,在微信开发者工具中。点击版本管理,可以看到最新复制进去的,还没推送上去的项目。首先先执行类似 git commit -m
的命令,把项目推送到临时仓库中。然后点击本地分支,执行 git push
的操作。
推送的时候报错,原因是我们没有设置网络认证。
设置了网络认证之后就可以推送成功了。