【小程序云开发】30分钟搭建个人相册小程序

news2024/11/18 11:36:14

文章目录

  • 前言
  • 准备工作
  • 小程序架构
  • 创建小程序云开发环境
  • 创建数据库
  • 搭建个人相册
  • 写在最后

在这里插入图片描述

前言

在这里插入图片描述

图片存储,是所有应用开发里最常见的场景之一。

本文将通过实战“个人相册小程序”开发,教你如何借助小程序 ·云开发 能力,提升功能开发效率,提升数据隐私保护能力。

准备工作

  1. 已申请小程序 ·云开发公测资格的微信小程序账号
  2. 公测版本的微信开发者工具
  3. 下载个人相册小程序 Demo源码

小程序架构

在这里插入图片描述

创建小程序云开发环境

打开微信开发者工具,创建一个新的小程序项目,项目目录选择个人相册 Demo 的目录, AppID 填写已经申请公测资格的小程序对应的 AppID。
在这里插入图片描述

1 ) 点击开发者工具上的【云开发】按钮
在这里插入图片描述
2 ) 点击【同意】
![在这里插入图片描述](https://img-blog.csdnimg.cn/1b1820979ee247c6a0ad290da2256a67.png在这里插入图片描述
3 ) 填写环境名称和环境 ID,点击【确定】创建环境,即可进入云开发控制台。
在这里插入图片描述

创建数据库

相册小程序会使用到云开发提供的数据库能力,数据库使用的是 MongoDB,需要优先创建 一个集合,方便之后使用。
1 ) 打开云开发控制台,点击菜单栏中的【数据库】,然后点击左侧边栏的【添加集合】按钮
在这里插入图片描述
2 ) 输入集合名称“user”,然后点击确定即可创建集合。
在这里插入图片描述

搭建个人相册

创建个人相册,实现照片的上传和存储

打开项目目录下的app.js文件,修改初始化云函数中的env参数为上一任务中创建的环境ID,并保存。
在这里插入图片描述
打开 pages/user/user.js 文件,里面是用户登录所相关的 js 逻辑,我们需要在文件中的 addUser 函数里添加保存用户信息到数据库的逻辑,代码如下:

// 获取数据库实例

const db = wx.cloud.database({})
// 插入用户信息

let result = await db.collection('user').add({
   data: {
      nickName: user.nickName,
      albums: []
   }
})

复制粘贴在文件的 70 行:
在这里插入图片描述
保存文件后,就实现了用户登录的能力。页面会自动刷新,点击页面上的登录按钮,即可在 页面上看到自己的昵称和头像。

实现了用户登录,接着来我们需要实现上传功能。

照片选择和上传的相关代码在 pages/photos/add.js 中,打开文件,找到 uploadPhoto 的 函数,即可看到函数接收了一个 filePath 的参数,他是用户选择照片时照片的本地临时路
径,我们需要使用云能力将图片上传到文件储存中,代码如下:

// 调用 wx.cloud.uploadFile 上传文件
return wx.cloud.uploadFile({
   cloudPath: `${Date.now()}-${Math.floor(Math.random(0, 1) * 10000000)}.png`, filePath
})

粘贴代码在文件的 66 行:
在这里插入图片描述
保存文件后,上传的能力就完成了。文件上传后,和登录一样,我们需要将上传好的文件信 息存储在数据库中,这个逻辑在 pages/photos/add.js 文件的 addPhotos 函数完成。相册 的数据存储在用户信息中,函数已经帮我们完成了对用户信息的更新,我们只需要完成用户
信息的更新即可,代码如下:

// 写入集合
db.collection('user').doc(app.globalData.id).update({
   data: {
      albums: db.command.set(app.globalData.allData.albums) 
   }
}).then(result => {
   console.log('写入成功', result)
   wx.navigateBack()
})

粘贴代码到文件的 102 行:
在这里插入图片描述
保存文件后,页面会自动刷新。至此,我们已经完成了一个简单的小程序的搭建,并将最核 心的能力使用小程序 ·云开发完成,快使用微信开发者工具或者扫描开发二维码用手机体验吧!

下载完整源码

写在最后

✨原创不易,希望各位大佬多多支持。

👍点赞,你的认可是我创作的动力。

⭐️收藏,感谢你对本文的喜欢。

✏️评论,你的反馈是我进步的财富。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【环境篇 1】CC2340环境搭建

文章目录 1 准备安装条件2.安装工具2.1 CCS12.1 安装2.2 下载并安装CC23XX SDK2.3 下载并安装对应开发环境和版本的 Sysconfig2.4 下载对应版本Free-RTOS2.5 下载并安装 TI Clang 3 工程编译3.1 环境修改3.2 导入工程2.4 编译项目 1 准备安装条件 CCS IDE编译工具,…

React 路由react-router-dom详解

React 路由react-router-dom详解 ( 路由嵌套 路由传参 路由权限 路由优化 按需导入 404页面 ) 前面我们先了解一下 路由是什么? 路由分类有哪些?内置API有哪些? 可能有点枯燥,不喜欢看的直接跳过! 1,相…

2023年软考中级网络工程师考试大纲

1.考试目标 通过本考试的合格人员能根据应用部门的要求进行网络系统的规划、设计和网络设备的软硬件安装调试工作,能进行网络系统的运行、维护和管理,能高效、可靠、安全地管理网络资源,作为网络专业人员对系统开发进行技术支持和指导&#…

几十个简要的游戏案例分析

文章目录 一、 介绍二、 影响游戏体验的因素三、 游戏能爆火的因素1.影响游戏爆火因素的排名2.玩游戏的两种经典心理3.经典案例分析Qq农场植物大战僵尸水果忍者召唤神龙羊了个羊 4.游戏公司可借鉴的经验 四、 几十款游戏的多方面分析FC红白游戏机十二人街霸热血高校系列魂斗罗系…

vsftpd 3.0.3升级到3.0.5后的坑

1、问题描述 vsftpd 3.0.3升级到3.0.5后,Java ftps连接不成功,报以下错误: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshakeat java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1715…

Java日志处理

日志 日志就是Logging,它的目的是为了取代System.out.println() 输出日志,而不是用System.out.println(),有以下几个好处: (1)可以设置输出样式,避免自己每次都写“ERROR: ” var &#xff0…

故障分析 | 一次规律的 MySQL 主从延迟跳变

作者:李彬 爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。爱好有亿点点多,吉他、旅行、打游戏… 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注…

WxGL应用实例:绘制高精度的3D太阳系模型

文章目录 1 坐标系的选择1.1 黄道坐标系1.2 三维空间直角坐标系 2 使用JPL星历表计算轨道2.1 日期时间2.2 特定时刻天体的位置2.3 天体运行轨道 3 太阳系模型3. 1 全家福3.2 时间、距离和半径的缩放3.3 黄道坐标系模型 天何所沓?十二焉分?日月安属&#…

拆解Open ODS View和HANA Composite Provider

这两个也不是新面孔了。 那么OODS和HCPR到底他俩怎么用?既然大家都是虚拟的,不占地方。那这俩infoprovider到底有啥区别? 首先就是目的不同。 HCPR是可以用Union和Join。也就是老的Multiprovider和InfoSet。Union就是说两个数据集的行能被…

UniLM模型简单介绍

目录 一、概要 二、深入扩展 2.1 预训练任务 2.2 模型精调 一、概要 如果将基于Transformer的双向语言模型(如BERT模型中的掩码语言模型)与单向的自回归语言模型(如BART模型的解码器)进行对比,可以发现&#xff0c…

常见的注册中心Nacos、Eureka

常见的注册中心 1.Eureka(原生,2.0遇到瓶颈,停止维护) 2.Zookeeper(支持,专业的独立产品。例如:dubbo) 3.Consul(原生,GO语言开发) 4.Nacos …

中国社科院与美国杜兰大学金融管理硕士项目——在职读研的日子里藏着我们未来无限可能

人生充满期待,梦想连接着未来。每一天都可以看作新的一页,要努力去成为最好的自己。在职读研的光阴里藏着无限的可能,只有不断的努力,不断的强大自己,未来会因为你的不懈坚持而发生改变,纵使眼前看不到希望…

算法---统计参与通信的服务器

题目 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其…

【C语言】调试工具GDB简述

一、说明 GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具,可以调试ada, c, c, asm, minimal, d, fortran, objective-c, go, java,pascal等语言。本文介绍GDB启动调试的方式。 二、Ubuntu上安装gdb。 在root用户权限下: roo…

【通过蓝牙滚动文本和Android控制】

【通过蓝牙滚动文本和Android控制】 1. 概述2. MAX72193. 电路原理图4. MAX7219基本Arduino代码5. 88 LED矩阵滚动Arduino代码6. 用于通过蓝牙控制 88 LED 矩阵的安卓应用程序1. 概述 我们将做三个例子,第一个例子我们将解释MAX7219的基本工作原理,在第二个例子中,我们将看…

scala控制抽象之传名参数(名调用)

我们在用scala定义函数时,一般参数都是各种类型的值,这是常见的值调用 但偶尔也有需要把代码块作为参数传入的情况(名调用) 匿名函数经常可以作为函数的参数传入,非匿名函数也行(函数作为返回值返回就更常见…

都说软件测试不行了,真的是这样吗?

最近在各大平台经常会听到大家说这样的话: 现在公司都不招人,测试员根本找不到工作 简历石沉大海、面试机会也没有,软件测试是不是不行了 软件测试行情到底如何? 作为软件员在如今的情况下又该怎么做? 其实现在所…

ai生成文章 免费-自动生成文章

原创文章自动生成器 随着人工智能技术的快速发展,越来越多的创新产品得以应用到我们的日常工作中。其中,原创文章自动生成器是一种高效、智能的工具,它可以帮助企业快速生成符合要求的优质文章。在本文中,我将向您介绍原创文章自…

数据结构算法leetcode刷题练习(1)

给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一…

4.2 插值多项式的求法

学习目标: 我会采取以下几个步骤来学习插值多项式的求法: 学习预备知识:插值多项式的求法需要掌握一定的数学知识,例如多项式函数的定义、导数、微积分、线性代数等等。因此,学习插值多项式的求法前,需要先…