1 小程序云开发环境搭建
1.1 创建环境
创建小程序项目的时候选择云开发,前提条件要有APPID
创建完项目会有cloudfunctions文件夹和miniprogram文件夹
点击IDE上方的云开发,一步步创建环境,得到环境id
右键点击cloudfunctions文件夹选择创建好的环境
在app.js中将env的值改为自己创建的环境id
1.2 在JS文件中使用云数据库(云存储)要做的准备
在JS文件的开头
const db = wx.cloud.database()
const _ = db.command
以上就完成了初始化,可以直接在js函数里访问数据库
1.3 在云函数中使用云数据库(云存储、调用其他云函数)要做的准备
云函数属于管理端,运行环境是 Node.js,且需要安装wx-server-sdk依赖
第一步,新建Node.js云函数
第二步,在该云函数目录下打开终端,安装依赖:npm install --save wx-server-sdk@latest
第三步,在该云函数目录下的index.js文件中初始化
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const _ = db.command
第四步,上传并部署云函数到云开发平台
第五步,可以在JS文件中调用云函数
注意:在云函数中进行一般算法不需要安装依赖(指不使用云数据库、云存储、调用其他云函数的操作)
2 小程序云开发具体实例
1.1 数据库运用
1.1.1 初始化
const db = wx.cloud.database();
const _ = db.command
1.1.2 数组查询(筛选适合条件的记录)
query() {
db.collection("data") // 选择data集合
.where({
count: _.in([1,3]) // 筛选在所写数组内的字段
})
.get() // 得到筛选信息 promise 对象
.then(console.log) // 输出对应信息
.catch(console.error)
},
1.1.3 正则查询(筛选适合条件的记录)
query() {
console.log('query')
db.collection("data")
.where({
name: new db.RegExp({
regexp: 'krisli-0[1-9]', // 匹配krili-01 ··· krisli-09
options: 'i'
})
})
.get().then(console.log)
},
1.1.4 字段查询(所有记录都会打印出来,显示true的字段)
query() {
db.collection("data")
.field({
name: true,
sex: true
})
.get()
.then(console.log)
.catch(console.error)
},
1.2 存储
1.2.1 上传文件
只能一张一张上传,目前靠循环临时文件路径
wx.cloud.uploadFile({
cloudPath: 'example.png', // 上传至云端的路径
filePath: '', // 小程序临时文件路径
success: res => {
// 返回文件 ID
console.log(res.fileID)
},
fail: console.error
})
上传成功后会获得文件唯一标识符,即文件 ID,后续操作都基于文件 ID 而不是 URL。
1.2.2 下载文件
可以根据文件 ID 下载文件,用户仅可下载其有访问权限的文件:
wx.cloud.downloadFile({
fileID: '', // 文件 ID
success: res => {
// 返回临时文件路径
console.log(res.tempFilePath)
},
fail: console.error
})
1.2.3 删除文件
wx.cloud.deleteFile({
fileList: ['cloud:// ······/1.png'], // 数组
success: res => {
// handle success
console.log(res.fileList)
},
fail: console.error
})
更详细的 API 可参考小程序端及后端存储 API 文件。
组件支持
1.2.1 获取文件临时链接
wx.cloud.getTempFileURL({
// 通过fileID来得到临时链接,用于外网?一些服务用到的源文件地址
// 文件链接有有效期为两个小时:
fileList: ['cloud://······/1.jpg'],
success: res => {
console.log(res.fileList[0])
// fileList 是一个有如下结构的对象数组
// [{
// fileID: 'cloud://xxx.png', // 文件 ID
// tempFileURL: '', // 临时文件网络链接
// maxAge: 120 * 60 * 1000, // 有效期
// }]
}
})