小程序云开发初探(小结)

云开发是微信平台新开放的功能,为开发者提供集成了服务器,数据库和资源存储的云服务。本文将基于官方文档,以一个小例子来作为探索云开发的相关功能。

云开发官方文档

一、新建云开发项目新建项目

将微信开发助手更新之后,选择云开发模板。

项目目录

项目目录分为了2大块内容:cloudfunctions(云函数)和miniprogram。miniprogram存放的是和普通开发相同的业务代码和资源,cloudfunctions中则存放了可以上传至云端的代码,在云开发中被称为云函数。
云开发模板建立之后,会带有一些相关例子可以熟悉api。

二、控制台

微信开发者工具更新之后,在工具栏上会有一个控制台入口,点击可出现以下面板,可查看相关数据情况。

概览

概览界面如上图所示,展示了该 云开发项目下使用云资源的统计数据。

用户管理

凡是访问过云项目的用户,都会在用户管理下留有访问记录。前提是该小程序在app.js中设置traceUser:true,表示允许记录用户信息。

 wx.cloud.init({
    env:'......',
    traceUser: true,
  })

数据库

数据库是控制台中最常用的功能之一,在该界面下,可以快速建立数据集合,可以理解为数据表。可在控制台中建立新的集合,添加记录有三种方式:控制台手动添加、文件导入以及调用api。调用api会在每条记录中自动插入用户_openid。

存储管理

存储管理可保存小程序端上传的文件,可通过调用api进行上传,上传名称和路径需要自己定义。

云函数

云函数对cloudfunctions中上传的函数进行管理,可进行调试,查看调用日志等信息。

云函数添加方式有2种,可视化添加与IDE添加,可视化添加的云函数直接上传至了云端,IDE中添加需要上传部署才可以调用。如果要删除云函数,在控制台删除之后,IDE中同步云函数列表即可。

统计分析

统计分析对云服务的调用情况有针对得给出了数据。

三、环境配置

api会在每条记录中自动插入用户_openid。

项目初始化需要在app.js中进行配置,env中填写的就是自主配置的环境ID。

 wx.cloud.init({
    env:'mina-cloud-test001'
  })

四、实际应用

本例以上传书籍信息为实际应用,实现基本的书籍信息增删改查功能,以及图片的上传删除。

读取数据库数据

先通过调用wx.cloud.database();获取数据库所有集合,然后通过查询具体集合的方式获取数据。

 const db = wx.cloud.database();
  const _ = db.command;

  db.collection('bookList').get().then(res => {
    console.log('get', res)
    self.setData({
      bookList: res.data
    });
  })

增加数据

 const db = wx.cloud.database();
  const _ = db.command;

  db.collection('bookList').add({
    data: {
     bookMes: self.data.bookMes
    }
  }).then(res => {
    console.log(res)
  })

删除数据

 db.collection('bookList').doc(id).remove().then(res => {
    console.log(res)
    wx.showToast({
      title: '删除成功!',
    })
    self.getBook();
    }).catch(err => {
      console.log('err', res)
    })
  })

增加数据

 const db = wx.cloud.database();
  const _ = db.command;

  db.collection('bookList').doc(id).remove().then(res => {
    console.log(res)
    }).catch(err => {
      console.log('err', res)
    })
  })

改变数据

  const db = wx.cloud.database();
  const _ = db.command

  db.collection('bookList').doc(self.data.currentId).update({
    data: {
     bookMes:self.data.bookMes
    }
  }).then(res=>{
    console.log('update',res)
    self.getBook();
  }).catch(console.error)

查询数据&调用云函数

查询数据采用云函数为例

先在云函数中定义查询函数,每个需要调用云开发api的云函数都必须使用wx-server-sdk,当新创建一个云函数时,项目会提示是否需要使用依赖,选择是则会自动安装wx-server-sdk
函数中的event参数代表由小程序端传递过来的参数,除此之外默认包含了userInfo,可用来做用户鉴权操作。

 //云函数入口文件
  const cloud = require('wx-server-sdk')
  cloud.init()
  const db = cloud.database()
  const _ = db.command

  //云函数函数入口
  exports.main = async (event, context) => {
    return db.collection('bookList').where({
      'bookMes.name': _.eq(event.bookMes.name),
      'bookMes.chooseTags':_.in(event.bookMes.chooseTags)
  }).get({
    success:function(res){
     return res
    }
   })
  }

小程序端引用云函数,name为云函数文件夹的名称,data中存放的是传递给云函数的参数,云函数通过event获取:

 wx.cloud.callFunction({
    name: 'searchBook',
    // 传给云函数的参数
    data: {
      bookMes: self.data.bookMes
    }
  }).then(res => {
    console.log('search',res.result.data)
    self.setData({
      bookList:res.result.data
    })
  })

本文中的api使用方式仅为示例,实际上服务端的api比小程序端的api丰富,实现功能更多。建议设计文件存储、数据库增删改查的操作都在云函数中进行。

上传图片

上传图片需要先调用wx.chooseImage返回的filePath参数,然后自主定义cloudPath,即上传至云端的地址。

 choose() {
    let self = this
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: function (res) {
      // console.log(res.tempFilePaths[0])
      // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
        self.setData({
          bookPic: res.tempFilePaths[0]
        })
      }
    })
  },
  upload(){
    let self = this
    const filePath = self.data.bookPic
    let myDate = new Date();
    let time = '' + myDate.getFullYear() + (myDate.getMonth() + 1) + myDate.getDate() + myDate.getHours() + myDate.getMinutes() + myDate.getSeconds();
    const cloudPath = 'book-image' + time + filePath.match(/\.[^.]+?$/)[0];

    return wx.cloud.uploadFile({
      cloudPath,
      filePath,
    }).then(res => {
      console.log('upload', res)
      let bookMes = self.data.bookMes;
      bookMes.bookPic = res.fileID;
      return self.setData({
        bookMes
      });
    }).catch(err => {
      console.log('error',err)
    })
  }

删除图片

删除图片或其他文件需要具体的fileId,可通过查询得到,通过该fileID进行删除。

 wx.cloud.deleteFile({
    fileList: [fileId],
    success: res => {
      console.log('delete', res.fileList)
    },
    fail: err => {
      console.log('deleteE', err)
    }
  })

五、发现存在的问题

在实际写例子的过程中,也发现了一些问题,因为云开发的功能开放不久,功能并不是很完善,总结了一些发现的小问题:

  • 数据库暂不支持模糊查询
  • 数据库集合之间无法关联
  • 上传图片如果cloudPath和之前的图片一致的话,返回结果虽然现实成功,但实际替换成了之前的旧图
  • globalData定义方法发生改变,无法与onLaunch同级进行定义。

六、结语

关于云开发,官方文档给出的说明比较详细,仔细阅读文档可以较快速得实现上手应用。但由于目前其功能的局限性,较为复杂的公司业务不适合采用该模式进行开发,适合个人小型业务采用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 小程序云开发部署攻略(图文教程)

    写在前边 微信小程序的云开发功能刚刚上线,笔者小试一把,看看是不是真的可以一人搞定小程序的开发,而不需要再去伺候一个后台了,虽然不难,但是还是废了一些周折,特此记录一下,旨在帮助大家真正快速部署成功,可以潜心研究他的api,减少各位大佬的磨刀时间.打官腔的话就不多说了,官方文档的措辞已经很优美了,云开发官方文档 step1,更新微信开发者工具至最新版 这里注意一下,不要在微信开发者工具上边直接检测更新,因为目前检测出来的并不是最新版本,当然也不具备云开发的能力,有图为证: 而官网更新的版本是这样

  • 微信小程序云开发之使用云函数

    在之前的几篇文章里面介绍了下云开发中的云数据库.云存储: 微信小程序如何使用云开发 微信小程序之使用云存储 微信小程序之使用云数据库 接下来的这篇文章主要介绍下云函数,介绍这个云函数的主要用途是因为要解决从云数据库查询数据最多显示20条的限制,而使用到云函数可以解决这种限制,使用云函数可以将最大限制改为100条,继而达到我们需要的效果. [步骤] 简单说一下我们如何创建云函数,如下所示 >我们右击cloudfunctions出现如下图所示,点击新建Node.js函数即可 >创建好云函数后我们需

  • 微信小程序云开发之新手环境配置

    本文实例为大家分享了微信小程序云开发环境配置的具体方法,供大家参考,具体内容如下 注意:小程序云开发需要使用注册的小程序appid,测试和游客进入是没有云开发的功能. 首先我们新建小程序项目,填写申请的appID如果没有需要注册一个,微信为我们提供了一个云开发快速启动的模板,这里我们勾选进去看看云开发为我们提供的案例. 首次进入控制台会报cloud init error (云初始化错误). 如果我们填写了在微信的左上角调试器旁边有一个云开发,在这里我们点击云开发 点击开通云开发 官网建议我们建两

  • 微信小程序云开发之使用云存储

    上一节为大家介绍了下云开发的搭建,接下来为大家介绍下怎么使用云存储,顾名思义,云存储当然就是我们平常所说的百度网盘用来存储自己的资源,当然我们这里的云存储不仅可以存储自己的素材还可以在云数据库调用自己云存储的数据,这既是云开发的一大特色之处吧,话不多说直接说下周末操作吧. [步骤] 1.打开我们的云开发然后点击存储管理如下所示 2.到存储管理这里我们可以上传文件,如下所示 我们点击上传文件可以从本地把自己的文件上传到这里,值得注意的是在自己上传文件的时候尽量取好名字,这样会减少自己操作的负担.说

  • 小程序云开发如何实现图片上传及发表文字

    微信给了我们存储空间以及图片上传的功能,我们怎么可以轻易放过呢? 先看看界面: 二话不说, 先实现界面: <!--pages/pulish/pulish.wxml--> <view class='flexDownC'> <view class='flexDownC w100'> <textarea class='input' bindinput='textInput' placeholder-style='margin-left:20rpx;' maxlength

  • 微信小程序云开发详细教程

    微信小程序云开发之初体验,供大家参考,具体内容如下 小程序云开发是微信最近推出的新的一项能力,它弱化了后端以及运维的概念,开发者无需搭建服务器,使用微信平台提供的api即可完成核心的业务开发. 目前提供三大基础能力支持: 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码 数据库:既可在小程序前端操作,也能在云函数中读写的 JSON 数据库,免费2G容量 存储:可在小程序前端上传/下载云端文件,在云开发控制台可视化管理,免费5G容量 上手体验 打开微信开发者工具,新建

  • 小程序云开发实战小结

    1. 云开发简介 由于小程序本身存储数据的能力有限,所以不可能将大量的数据保存在客户端,而且将数据保存在本地既不安全,也无法与其他小程序用户共享,所以大多数小程序都需要一个服务端,服务端可以用多种技术实现,如PHP.Node.js.Python.ASP.NET.Java EE等.不管使用哪种技术实现服务端,开发一款小程序都需要至少配备两个程序员,一个是开发小程序的程序员,一个是开发服务端的程序员.而且这两个程序员之间还需要不断沟通,以便确认共同遵循的接口. 开发一款小程序需要两名或更多的程序员参

  • 微信小程序云开发之使用云数据库

    在上一节我们介绍了下怎么使用云存储来存储我们需要的数据,接下来这节也是我们在实际开发比较重要的东西数据库,首先数据库当然是我们要显示在前端界面上的内容,如果要使用云存储+云数据库该如何操作呢,下面我来详细为大家介绍下具体流程 [步骤] 首先我们打开云开发然后点击数据库,自己在数据库这里新建一个集合(我的建的集合叫做videos),如下 tempFileURL是我们在云存储里面保存的数据,然后下面的链接就是我们之前所说的详情里面的下载地址如下所示 我们只需要将我们详情界面中的下载地址copy粘贴到

  • 微信小程序如何使用云开发

    微信小程序中的云开发想必大家还不是很熟悉,因为云开发也就是9月份上线的,相比之前大家对于数据库的存储都是用的是自己的服务器,接下来这篇文章主要为大家介绍下怎么使用云开发,网上看过很多文章感觉介绍的不是很详细,下面通过我个人亲身经历整理下自己的思路吧. 首先介绍下云开发主要的三大特点,目前提供三大基础能力支持: 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库 存储:在小程序前端直接上传/下载云

  • 微信小程序云开发使用方法新手初体验

    今天看到微信推送了一条小程序云上线通知,作为一个前端er,满怀期待的去看了看,很不错先看看文档上怎么说的: 开发者可以使用云开发开发微信小程序.小游戏,无需搭建服务器,即可使用云端能力,6的一匹. 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥.(就是说以后老板让你做小程序,连个后台的人都不用给你配了,自己搞定就行了). 目前提供三大基础能力支持: 云

随机推荐