微信小程序云开发

669 阅读2分钟

微信小程序云开发

从0开始使用小程序云开发


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 方法获取到每次调用的上下文(appidopenid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

  1. 编写云函数

  2. 一键部署云函数(云函数有改动后需要重新部署)

  3. 调用云函数

    // 云函数入口文件
    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. 初始化云函数的环境
  1. 创建一个与pages同级的名为cloud的文件夹

  2. 在project.config.json里面配置云函数所在目录为cloud,

    "cloudfunctionRoot": "/cloud"
    
  3. cloud文件夹图标出现云朵代表成功

1.42. 云函数调用
  1. 创建node.js云函数

  2. 编写云函数入口函数

    exports.main = async (event, context) => {
      return cloud.database().collection('recommend_food')
    			.get()
    }
    
  3. 调用云函数

    // 云函数调用
    wx.cloud.callFunction({
    	name: 'getData',
    }).then(res => {
    	console.log('succes',res)
    	this.setData({
    		openid: res.result.openid
    	})
    },err => {
    	console.log('error',err)
    })
    
1.43. 多个云开发环境出现问题
  1. 在云函数里指定你要使用的云开发环境

  2. 使用DYNAMIC_CURRENT_ENV常量

    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV
    })