2019年2月26日,人们为了一个杯子疯了一天。

星巴克猫爪杯,一场已经与猫无关了的“圣杯战争“。网上的倒卖价格,已炒至近千元!

求而不得,舍而不能,得而不惜。这是人最大的悲哀。。。

所以,请珍惜以下内容,知识才是人生最大的财富!

前情回顾

技本功丨收藏!斜杠青年与你共探微信小程序云开发(中篇)

在上一篇文章中我们完成了首页的编写,目前基本的功能已经确定了,本节我们进行列表页的编写。列表页比较简单:将所有food列表展示出来,根据openid进行判断是否展示删除按钮即可。用户可以删除自己创建的记录。

 开发步骤 

  1. 新建页面文件

  2. 编写页面wxml

  3. 编写js

  4. 编写样式

  5. 测试

下面我们开始进行列表页的编写。

编写页面wxml

match

约定好js中的数据为foodlist,我们对foodlist字段进行循环输出即可:

另外有一个删除按钮根据条件渲染,即当前item的openid跟我们正在使用小程序的用户openid是否一致,一致的话我们展示删除按钮供用户操作即可。之所以这样做是因为目前小程序不支持写他人数据,关于小程序用户权限值可以参考下图:

可以看到管理端拥有绝对的读写权限,但是不支持用户操作另一用户的数据,数据库的操作可以在小程序开发者工具中的云开发工具中进行设置:

编写js

写完页面的模版之后我们就可以进行js的编写,js主要逻辑是:加载完成时调用云开发api获取所有food,提供删除方法调用云开发api进行删除。涉及到的云开发api有getCount获取数据数量、get获取数据、remove删除记录。

通过官方文档我们可以看到remove函数的参数:

我们需要记录的引用来调用删除函数,获取某条记录的引用我们可以通过doc函数获取:

我们可以传入记录的id就能获取这条记录的引用,下面我们实现具体的删除方法delItem。删除方法我们只需要记录的id即可进行删除:

编写好删除方法后我们编写获取所有数据记录的方法,这里仅仅用作演示获取所有记录,实际环境中还是建议使用分页特性分批次获取数据。

使用get方法获取数据默认最多获取的是20条数据,因此要获取所有数据我们要结合count函数和skip函数进行递归来获取集合所有数据:

1、首先我们写一个根据相应参数获取数据的方法

2. 然后编写一个调用findfood方法的用于递归的函数

3. 最后我们编写供js直接使用的getAllFood函数

在这个函数里我们使用getCount函数获取集合数量,然后计算页数,再根据页数进行循环调用flag_pop函数即可。

编写获取所有数据方法后我们就回到页面的js编写上,值得注意的是有一个云函数需要调用,我们有一个getUserInfo的方法来获取用户的openid,云函数是微信服务端进行的私有鉴权,因此我们部署上去后就可以使用,获取用户openid的函数体是:

创建云函数在根目录下的cloudFunc|(环境名称)右键然后点击“新建nodeJS云函数”即可创建云函数模版,部署云函数在云函数的文件夹下右键然后选择“创建并部署”即可。使用云函数可以通过wx.cloud.callFunction()调用,该函数在官方文档中描述为:

云函数的具体使用可以参考官方示例文档:

https://dwz.cn/C95gkLVv

接下来我们在页面的js文件里编写一个出初始方法用于获取所有数据,并在onShow的时候调用它。我们首先使用getUserInfo云函数获取当前用户的openid,然后再去获取所有的数据。详细代码如下:

openid的作用主要是页面上用于判断是否显示删除按钮,数据库中的所有记录都会有一个_openid字段,值是这条记录的创建者的openid,当前小程序的使用用户的openid跟记录中的__openid字段相同才可以进行删除。

下面我们在页面的js中定义好删除事件deletefood,删除事件有模版传过来一个记录值的id,我们使用deleteFood方法把参数也就是id传给until中的delItem即可。deletefood方法实现如下:

全部完成后我们就能在列表页查看所有food了:

给这个页面加上简单的css之后就变成这样的:

可以看到我创建的“不加醋的糖醋里脊“可以被删除。

结 语

至此我们的“吃什么”小程序就开发完啦,首页长这样子:

集成了云开发的添加,删除特性,使用了一个简单的云函数,虽然简单但是对于新手上手云开发还是很有帮助的,小程序源码开放在Github中,需要源码的可以自行下载:

https://github.com/topiniu/eatwhat

技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)的更多相关文章

  1. 微信小程序云开发-数据库和云函数的应用-点赞/收藏/评论功能

    一.准备工作 1.创建数据库表articles,字段分别为: 序号 字段名称 字段类型 字段值 字段描述 备注说明 1 title string "标题1" 文章标题   2 de ...

  2. 用小程序·云开发两天搭建mini论坛丨实战

    笔者最近涉猎了小程序相关的知识,于是利用周末时间开发了一款类似于同事的小程序,深度体验了小程序云开发模式提供的云函数.数据库.存储三大能力.关于云开发,可参考文档:小程序·云开发. 个人感觉云开发带来 ...

  3. 小程序·云开发的HTTP API调用丨实战

    小程序云开发之httpApi调用. 小程序云开发之httpApi调用(返回"47001处理") 技术栈 采用 nodejs + express 搭建web服务器,采用 axios ...

  4. 技本功丨知否知否,Redux源码竟如此意味深长(上集)

    夫 子 说 元月二号欠下袋鼠云技术公号一篇关于Redux源码解读的文章,转眼月底,期间常被“债主”上门催债.由于年底项目工期比较紧,于是债务就这样被利滚利.但是好在这段时间有点闲暇,于是赶紧把这篇文章 ...

  5. 微信小程序session_key解析中反斜杠问题处理 Java解析

    Java服务端微信小程序解密用户信息.手机号需用到session_key也需要decode,以下是官方描述: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId ...

  6. 技本功丨请带上纸笔刷着看:解读MySQL执行计划的type列和extra列

    本萌最近被一则新闻深受鼓舞,西工大硬核“女学神”白雨桐,获6所世界顶级大学博士录取 货真价值的才貌双全,别人家的孩子 高考失利与心仪的专业失之交臂,选择了软件工程这门自己完全不懂的专业.即便全部归零, ...

  7. 技本功丨利用 Atomic 构建 React 项目工作流,so easy!

    近日刷微博,#2018年结婚率创新低#荣登热门话题NO.1,沪浙最不积极. 生活压力越大,缺爱的人也越来越多...据本萌的不完全观察,程序猿虽然是压力加成的职业,在袋鼠云还是有不少早早脱了单.至于,脱 ...

  8. 技本功丨用短平快的方式告诉你:Flink-SQL的扩展实现

    2019年1月28日,阿里云宣布开源“计算王牌”实时计算平台Blink回馈给ApacheFlink社区.官方称,计算延迟已经降到毫秒级,也就是你在浏览网页的时候,眨了一下眼睛,淘宝.天猫处理的信息已经 ...

  9. 技本功丨知否知否,Redux源码竟如此意味深长(下集)

    上集回顾 Redux是如何使用的?首先再来回顾一下这个使用demo(谁让这段代码完整地展示了redux的使用) 如果有小伙伴对这段代码不是很理解的话,建议先去学习Redux的使用再来看这篇源码,这样更 ...

随机推荐

  1. BLE CC2541 串口BootLoader 即 SBL BootLoader 资料 收集

    1.[CC254X_Bootloader]SBL(串口Bootloader)使用说明 2.CC2540协议栈高速串口通信解决(UART的DMA方式) 3.[BLE]CC2541之SBL 4.[BLE] ...

  2. Oracle Enterprise Linux 64-bit 下Oracle11g的监听配置改动及測试步骤

    測试环境:Oracle Enterprise Linux 64-bit (5.8版本号) + Oracle 11g 64位 相关说明: Oracle11g64位软件的安装位置为/u01/app/ora ...

  3. Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法

    将原来导的包remove from build path,并复制到Web-root下的lib目录中,再add to build path,

  4. B+树全面解析

    B+树的特征与结构 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点. 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的 ...

  5. 爬虫 - xpath 匹配

    例题 import lxml.html test_data = """ <div> <ul> <li class="item-0& ...

  6. 帝国CMS站点迁移

    1.重新安装xmapp环境 安装包地址 链接:https://pan.baidu.com/s/1OSwlP90G9VMAZYVXMG245Q 提取码:gnfr 2.安装后启动 3.复制数据库信息 将旧 ...

  7. vim插件管理 - vim-plug

    vim-plug是一款轻量的vim插件管理工具. GitHub:https://github.com/junegunn/vim-plug 插件的安装 unix curl -fLo ~/.vim/aut ...

  8. 搭建Jenkins自动化持续构建和部署系统

    什么是Jenkins? Jenkins是一个持续集成和持续交付的java应用程序,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.简单得说就是一款自动化构建测试和部署的 ...

  9. Golddata如何采集需要登录/会话的数据?

    概要 本文将介绍使用GoldData半自动登录功能,来采集需要登录网站的数据.GoldData半自动登录功能,就是指通过脚本来执行登录,如果需要验证码或者其它内容需要人工输入时,可以通过收发邮件来执行 ...

  10. C语言中的if与else if

    今天发现一个比较不理解的代码,是关于else if这个判断语句的代码.代码如下 #include<stdio.h> ; int main(void) { ) { printf(" ...