云开发
初始化
wx.cloud.init({ env: 'test-x1dzi' })
云数据库
数据类型 String,Number,Boolean,Array,Object,Date,GeoPoint,Null
权限管理,小程序的权限分小程序端和管理端,其中管理端包括云函数和云控制台
小程序运行的程序,读写数据库受权限控制
管理端拥有读写数据库全部权限
初始化
const db = wx.cloud.database()
获取数据库集合
const todos = db.collection('todos')
假设有个ID为'todo-identifiant-aleatoire',可以通过doc获得
const todo = db.collection('todos').doc('todo-identifiant-aleatoire')
插入数据
通过add方法添加数据
db.collection('todos').add({ // data 字段表示需新增的 JSON 数据 data: { // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了 description: 'learn cloud database', due: new Date('2018-09-01'), tags: [ 'cloud', 'database' ], // 为待办事项添加一个地理位置(113°E,23°N) location: new db.Geo.Point(113, 23), done: false }, success(res) { // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id console.log(res) } })
查询数据
通过get方法查询数据
db.collection('todos').doc('todo-identifiant-aleatoire').get({ success(res) { // res.data 包含该记录的数据 console.log(res.data) } })
获取多条记录
db.collection('todos').where({ _openid: 'user-open-id', done: false }) .get({ success(res) { // res.data 是包含以上定义的两条记录的数组 console.log(res.data) } })
小程序端只能获取一条数据,获取多条数据可以通过云函数
return new Promise((resolve, reject) => { db.collection('test').where({ done: false }).get().then(res=>{ resolve(res) }).catch(err=>{ reject(err) }) })
小程序端调用云函数
wx.cloud.callFunction({ name:'get', success: res=>{ console.log(res) } })
更新数据
db.collection('todos').doc('todo-identifiant-aleatoire').update({ // data 传入需要局部更新的数据 data: { // 表示将 done 字段置为 true done: true }, success(res) { console.log(res.data) } })
删除数据
db.collection('todos').doc('todo-identifiant-aleatoire').remove({ success(res) { console.log(res.data) } })
云函数
在跟目录package.config.json配置
{ "cloudfunctionRoot": "./functions/" }
云函数模板
const cloud = require('wx-server-sdk') // 云函数入口函数 exports.main = async (event, context) => { }
代码
exports.main = async (event, context) => ({ sum: event.a + event.b })
小程序中调用云函数
wx.cloud.callFunction({ // 云函数名称 name: 'add', // 传给云函数的参数 data: { a: 1, b: 2, }, success(res) { console.log(res.result.sum) // 3 }, fail: console.error })
云存储
上传文件
wx.cloud.uploadFile({ cloudPath: 'example.png', // 上传至云端的路径 filePath: '', // 小程序临时文件路径 success: res => { // 返回文件 ID console.log(res.fileID) }, fail: console.error })
下载文件
wx.cloud.downloadFile({ fileID: '', // 文件 ID success: res => { // 返回临时文件路径 console.log(res.tempFilePath) }, fail: console.error })
删除文件
wx.cloud.deleteFile({ fileList: ['a7xzcb'], success: res => { // handle success console.log(res.fileList) }, fail: console.error })