微信小程序云开发记录(一)

1,169 阅读2分钟

微信小程序云开发(一)

创建项目

步骤不一一描述,这里注意以下注意点:

云开发项目必须要有appid,测试号无法使用

本人未找到测试号可以使用的入口

打开微信开发者工具创建环境

创建成功后如发现项目始终无法关联服务空间,可重启微信开发者工具解决

云函数关联相关

云函数上传前要下载wx-server-sdk依赖(如果index.js中有使用到)

npm install --save wx-server-sdk@latest

注意是在云函数的根目录,而不是项目根目录

导入vant ui框架

具体步骤详见vant官方文档,这里不过多描述

创建homepage页面作为小程序进入的首页

样式如下,主要功能为记录我想记录的英语生词

创建编辑页面edit如下

主要功能为编辑我的生词

项目主功能

  1. 查询
  2. 添加
  3. 删除

创建集合

创建云函数

  1. cloudfunctions文件右击新建nodejs云函数
  2. 进入words根目录下载wx-server-sdk依赖
npm install --save wx-server-sdk@latest

操作数据库问题

微信小程序提供两种操作数据库的方式

  1. 小程序直接操作数据库
  2. 云函数操作数据库

比较

果涉及『其他用户可以改动别人创建的数据』这种情况的话,建议将数据库操作放在云端。 (一般来说还是这种情况是偏多的,建议直接放在云端)

这里采用云函数操作数据库

考虑有1. 查询 2. 添加 3. 删除三种场景,我这里统一在words云函数中操作

  1. 小程序传一个type告知云函数是何种操作,
  const db = cloud.database()
  const {
    type
  } = event

这里注意是cloud.database() 而不是 wx.

策略模式区分

  const rule = {
    'query':async ()=>{
      //查询业务逻辑
    },
    'add':async ()=>{
      //添加业务逻辑
    },
    'delete':async ()=>{
      //删除业务逻辑
    },
  }
  return rule[type]()

这里注意,三个回调都是异步async 并且需要return rule[type]()因为云函数返回一个异步结果

云函数查询

      const {
        pageSize,
        pageNum
      } = event
      return await db.collection('words').orderBy('createTime', 'desc').skip((pageNum - 1) * pageSize).limit(pageSize).get().then(res => {
        console.log(res.data)
        return res.data
      })

云函数新增

      const {
        word,
        wordExplain
      } = event
      return await db.collection('words').add({
        data: {
          word: word,
          wordExplain: wordExplain,
          createTime: db.serverDate() //添加该字段
        },

      }).then(res => {
        return {
          code: 200
        }
      })

云函数删除

      const {
        id,
      } = event
      console.log('这里', id)
      return await db.collection('words').where({
        _id: id
      }).remove().then(res => {
        return {
          code: 200
        }
      })

注意这里的return await