微信小程序云开发
1.1. 云开发环境初始化
// app.js
onLaunch: function () {
// 云开发环境初始化
wx.cloud.init({
env: 'cloud1-1gklnc7n550025ef' // 云开发环境id
})
},
1.2. 数据库增删改查
- get方法查询数据
- where查询符合条件的数据
- doc查询单条数据
- add方法添加新数据
- update方法修改数据
- remove方法删除单条数据
// 1. 获取数据库引用
const db = wx.cloud.database()
// 2. 构造查询语句
// collection 方法获取一个集合的引用
// where 方法传入一个对象,数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件(比如大于、小于、in 等),具体见文档查看支持列表
// get 方法会触发网络请求,往数据库取数据
db.collection('books').where({
publishInfo: {
country: 'United States'
}
}).get({
success: function(res) {
// 输出 [{ "title": "The Catcher in the Rye", ... }]
console.log(res)
}
})
// index.js
// 查询操作
// 传统写法
wx.cloud.database().collection('recommend_food')
.get({
success(res){
console.log('请求成功',res)
},
fail(err){
console.log('请求失败',err)
}
})
// es6的写法
wx.cloud.database().collection('recommend_food')
.get().then(res => {
console.log('请求成功',res)
},err=>{
console.log('请求失败',err)
})
1.3. 存储
云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。
// 让用户选择一张图片
wx.chooseImage({
success: chooseResult => {
// 将图片上传至云存储空间
wx.cloud.uploadFile({
// 指定上传到的云路径
cloudPath: 'my-photo.png',
// 指定要上传的文件的小程序临时文件路径
filePath: chooseResult.tempFilePaths[0],
// 成功回调
success: res => {
console.log('上传成功', res)
},
})
},
})
1.4. 云函数
云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
-
编写云函数
-
一键部署云函数(云函数有改动后需要重新部署)
-
调用云函数
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() return { event, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, } }
1.41. 初始化云函数的环境
-
创建一个与pages同级的名为cloud的文件夹
-
在project.config.json里面配置云函数所在目录为cloud,
"cloudfunctionRoot": "/cloud" -
cloud文件夹图标出现云朵代表成功
1.42. 云函数调用
-
创建node.js云函数
-
编写云函数入口函数
exports.main = async (event, context) => { return cloud.database().collection('recommend_food') .get() } -
调用云函数
// 云函数调用 wx.cloud.callFunction({ name: 'getData', }).then(res => { console.log('succes',res) this.setData({ openid: res.result.openid }) },err => { console.log('error',err) })
1.43. 多个云开发环境出现问题
-
在云函数里指定你要使用的云开发环境
-
使用DYNAMIC_CURRENT_ENV常量
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })