微信小程序-云开发
2019-09-10 07:09
2066 查看
一、上传图片
1. 上传图片页面(WXML文件)
<!-- 上传图片 --> <view class="uploader"> <view class="uploader-text" bindtap="doUpload"> <text>上传图片</text> </view> </view>
- 绑定了一个
doUpload
处理函数
2. 对应的 JS 处理页面
// 上传图片 doUpload: function () { // 选择图片 wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success: function (res) { //显示一个转圈圈的样式 wx.showLoading({ title: '上传中', }) //获取文件的链接 const filePath = res.tempFilePaths[0] // 上传图片 const cloudPath = 'upload/my-image' + filePath.match(/\.[^.]+?$/)[0] wx.cloud.uploadFile({ cloudPath, filePath, success: res => { console.log('[上传文件] 成功:', res) //保存文件的相关信息,为后续页面做数据展示 getApp().globalData.fileID = res.fileID getApp().globalData.cloudPath = cloudPath getApp().globalData.imagePath = filePath //跳转到数据展示页面 wx.navigateTo({ url: '../storageConsole/storageConsole' }) }, fail: e => { console.error('[上传文件] 失败:', e) wx.showToast({ icon: 'none', title: '上传失败', }) }, complete: () => { wx.hideLoading() } }) }, fail: e => { console.error(e) } }) }, })
3. 上传成功后 数据展示页面
- JS 文件
const app = getApp() Page({ data: { fileID: '', cloudPath: '', imagePath: '', }, //监听页面加载事件 onLoad: function (options) { const { fileID, cloudPath, imagePath, } = app.globalData //设值 this.setData({ fileID, cloudPath, imagePath, }) })
- WXML 文件
<view class="list"> <view class="list-item" bindtap="testCgi"> <text class="black">上传成功</text> </view> <view class="list-item"> <text class="request-text">文件 ID:{{fileID}}</text> </view> <view class="list-item"> <text class="request-text">云文件路径:{{cloudPath}}</text> </view> <view class="list-item"> <image class="image1" src="{{imagePath}}" mode="aspectFit"></image> </view> </view>
二、获取 用户唯一标识
1. WXML 页面
<view> <button class="userinfo-nickname" bindtap="onGetOpenid">点击获取 openid</button> </view>
2. 对应的 JS 处理页面
onGetOpenid: function() { // 调用云函数 wx.cloud.callFunction({ name: 'login', data: {}, success: res => { console.log('[云函数] [login] user openid: ', res.result.openid) app.globalData.openid = res.result.openid wx.navigateTo({ url: '../userConsole/userConsole', }) }, fail: err => { console.error('[云函数] [login] 调用失败', err) wx.navigateTo({ url: '../deployFunctions/deployFunctions', }) } }) },
- 其中引用的云函数:
const cloud = require('wx-server-sdk') // 初始化 cloud cloud.init() /** * event 参数包含小程序端调用传入的 data */ exports.main = (event, context) => { // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件) const wxContext = cloud.getWXContext() return { event, openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, } }
3. 获取成功后 数据展示页面
- JS 文件
Page({ data: { openid: '' }, onLoad: function (options) { this.setData({ openid: getApp().globalData.openid }) } })
- WXML 文件
<view class="list"> <view class="list-item" bindtap="testCgi"> <text class="request-text">用户 openid 获取成功</text> </view> <view class="list-item" bindtap="testCgi"> <text class="request-text">{{openid}}</text> </view> </view>
三、简单操作云端数据库
// 云函数入口文件
const cloud = require('wx-server-sdk')
// 初始化
cloud.init()
1. 增加数据
onAdd: function () { const db = wx.cloud.database() db.collection('counters').add({ data: { count: 1 }, success: res => { // 在返回结果中会包含新创建的记录的 _id this.setData({ counterId: res._id, count: 1 }) wx.showToast({ title: '新增记录成功', }) console.log('[数据库] [新增记录] 成功,记录 _id: ', res._id) }, fail: err => { wx.showToast({ icon: 'none', title: '新增记录失败' }) console.error('[数据库] [新增记录] 失败:', err) } }) },
2.删除数据
onRemove: function() { if (this.data.counterId) { const db = wx.cloud.database() //this.data.counterId 为用户唯一标识 db.collection('counters').doc(this.data.counterId).remove({ success: res => { wx.showToast({ title: '删除成功', }) }, fail: err => { wx.showToast({ icon: 'none', title: '删除失败', }) console.error('[数据库] [删除记录] 失败:', err) } }) } else { wx.showToast({ title: '无记录可删,请见创建一个记录', }) } },
3.修改数据
onUpdate: function() { const db = wx.cloud.database() const newCount = this.data.count + 1 //this.data.counterId 为用户唯一标识 db.collection('counters').doc(this.data.counterId).update({ data: { count: newCount }, success: res => { this.setData({ count: newCount }) }, fail: err => { icon: 'none', console.error('[数据库] [更新记录] 失败:', err) } }) },
4. 查询数据
onQuery: function() { const db = wx.cloud.database() // 查询当前用户所有的 counters db.collection('counters').where({ _openid: this.data.openid }).get({ success: res => { this.setData({ queryResult: JSON.stringify(res.data, null, 2) }) console.log('[数据库] [查询记录] 成功: ', res) }, fail: err => { wx.showToast({ icon: 'none', title: '查询记录失败' }) console.error('[数据库] [查询记录] 失败:', err) } }) }
四、补充
其它相关操作详情,请参照微信小程序-官方开发文档
相关文章推荐
- 微信小程序开发-页面数据传递(getStorage,setStorage)
- 微信小程序开发(二)--网络请求
- 微信小程序开发--富文本插件wxParse的使用
- 微信小程序开发-新闻列表之新闻列表绑定
- 全栈开发工程师微信小程序-中
- 微信小程序开发之城市选择器 城市切换
- 【微信小程序开发】全局配置
- 开发运营必看,跳出雷区必须知道的微信小程序平台运营规范
- 微信小程序开发规范文档
- 微信小程序开发(request请求后台获取不到data)
- 微信小程序开发(二) -工具 补录
- 微信小程序开发学习笔记003--微信小程序页面布局
- 微信小程序开发中按下自己手机的返回按键是直接退出小程序而不是返回上级页面
- 微信小程序开发--逻辑层
- 微信小程序定制开发工具,自动生成前端源码
- 微信小程序开发教程-微信小程序入门
- 微信小程序 —— 成员管理及开发管理
- 前端跳槽面试Vue,WebAPP,Webpack,微信小程序电商平台校招面试MySQL性能管理React书城开发
- 限时团购,6.9折:《微信开发深度解析:公众号、小程序高效开发秘籍》推荐序
- 微信小程序 全站开发 thinkPHP 5.0+小程序商城