- excel文件导入云开发数据库漫谈
在阅读本文之前需要您对小程序云开发有一个基本的认知,如果没有这个前提条件,建议关闭。 本文背景今天打开社区看到一篇不错的文章,我不做过多的解读,具体看下面的文章 土办法将数据迁移导云数据库? - 微信开放社区 https://developers.weixin.qq.com/community/develop/article/doc/00064a87854748e941ca5d9765bc13 因为我在这方面也总结了不少经验,今天主要谈谈我个人在这块的积累。 本文内容在本文开始之前,建议先阅读官方的介绍文档,具体请移步下面的链接 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/import.html 目前小程序云开发数据库支持CSV,以及JSON格式文件导入,但是由于CSV文件不支持对数组、以及对象的操作,所以本文主要针对的是JSON这种格式 现在总结下本文的主题 如何通过将excel转成JSON文件,进而导入小程序云开发的数据库 我把这个工作写成了工具,该工具已正常使用半年左右,到目前可以推出给大家见面了,希望能帮到大家 https://www.xiaomutong.com.cn/index20200501.html f [图片] f 由于该工具会将excel文件的第一行作为属性名,所以在正式上传之前,请将整理好的Excel文件的表头改为目标数据对象的属性名,我具体举个栗子 比如目前excel文件格式为 [图片] 该excel文件的第一行前三列为学号、姓名、年龄 现在要改为下面的风格 [图片] 改后文件第一行的前三列为id、name、age,代表我们数据库集合的属性信息,现在我们 开始导入 第一步:上传文件 [图片] 第二步:点击按钮开始生成JSON,这个时候,生成的JSON文件便自动解析并且下载成功了,注意下图的左下角 [图片] 第三步:打开生成的JSON文件核对,第一列为_id,这个是云开发数据库默认的编号,为了让这个编号有意义,我在逻辑里自动生成了,按照当前日期+一个四位数字,用于支持10000行以内的单文件。 [图片] 第四步:上述生成的JSON文件是可以直接导入云开发数据库的,建议大家按照这种方式试一试,实际操作下,非常简单。 这样就完成了一个excel文件导入云开发数据库的全过程,so easy! ~~ 这样生成的文件便可以直接导入,当然也可以在生成JSON文件后批量替换,这两种方式均是可以的,看个人习惯,不做推荐 本文总结本文主要讲述如何将excel批量导入云开发数据库,并且具体描述了由本人开发的免费工具的使用方法,通过这种总结一方面让我对云开发的导入有了更深的认识,另一方面给小程序云开发初学者提供一些现成的解决方案。 本文备注1、JSON 数据不是数组,而是类似 JSON Lines,即各个记录对象之间使用 \n 分隔,而非逗号; 关于JSON Lines具体请移步下面链接, http://jsonlines.org/ f
2020-08-10 - 小程序个人独立开发者如何突围
本文背景最近在社区或者群里,看到不少有关个人小程序独立开发者抱怨收益少的问题,那么今天就建个帖子围绕这个话题具体阐述下我个人的看法,个人独立开发者可以通过开发小程序得到哪些收获 本文内容小程序独立开发者通过不断打磨小程序提供好的服务,最主要的目的还是想获得一定的回报,要说用爱发电,其实我是不信的 当看到下面这个截图,我就感到纯粹靠流量主收益,是不可能的,当然身边也有不少小程序开发者,通过流量主每天可以获得不少的收益,这个是客观存在的 f [图片] f [图片] [图片] [图片] f 我在之前有文章专门讲过对于小程序个人独立开发者如何获取收益,其中流量主是最直接,也是首先会考虑的,毕竟开通流量主之后,赚取的收入都是睡后收入,也就是日常说的被动收入,水管收入,是源源不断,不需要额外花精力的 那么当我们经过一段时间运营,流量主收入始终毫无起色的时候,我们该如何突围? f [图片] f 本文背景本文通过分析目前小程序的收益方式,并进而阐述单纯依靠流量主获取收益的难度,最后给个人独立开发者打打气,不要放弃,机会总是留给有准备的人 未完待续
2020-08-17 - 党建答题活动小程序复盘回顾
背景当前分享的党建答题活动会持续到七月一号建党节之后,昨天(6月22号)是活动第一天,中间出现了三个问题: 问题一 1、答题用时数据没有对齐,造成排序的时候错乱,比如下图 正常的排序规则是:按照答题分数降序,分数相同的,按照答题用时升序,这样保证得分高者排前面,相同得分,用时少的排在前面 但是下图, 用时7分的反而在后面,因为这里根据用时正序排序 [图片] 目前解决方案: 由于答题核心逻辑不想再改动代码了,所以采用事后补0的方式,比如7:34通过补0改为07:34 具体代码层面就是用云函数在每个整点去扫描,如果存在这种情况,进行补0 数据修复后,排序如下图所示 [图片] 问题二 2、答题结束时可以重复提交导致,部分用户有两次有效答题记录 造成这个问题的原因是由于在做最后一题提交的时候,提交了两次按钮,因为这个地方的逻辑比较多,所以有个时间 这里做了以下几个逻辑 1、提交到history集合 2、由于一天可以做两次答题,取做高分作为当天得分,所以这里做了这个逻辑判断,然后写入daily集合 差不多有一点的等待时间 [图片] 解决方案: 目前通过提交之后加状态位,保证只能提交一次 问题三3、其他样式问题,比如排名不对齐 [图片] 解决方案: 通过修改排名外层样式,之前样式display:flex;justify-content:center,改动如下 [图片] 总结答题是一个很精细的活,每一个细节都可能造成问题,通过上面两个细节,我们不难看出只有在实战中我们才能真正的成长。 加油~ 上面三个问题修复完成之后,该小程序作为一个党建答题活动小程序是一个完善版本,不存在任何bug。
2020-06-23 - 因小程序收集用户信息审核被拒如何解决
标题 因小程序手机用户信息审核被拒如何解决 背景第一次被拒,我报着侥幸的心理,走了一次不接受,徒劳,还是被拒了 [图片] 你的小程序"考前练习册",提审时间2020-06-18 15:40:49,版本审核未通过。 1: 你好,你的小程序涉及收集、存储用户敏感身份信息,平台暂不支持此功能,请修改。 [图片] 2 [图片] 3 https://developers.weixin.qq.com/miniprogram/product/reject.html#_3-4-%E7%94%A8%E6%88%B7%E9%9A%90%E7%A7%81%E5%92%8C%E6%95%B0%E6%8D%AE%E5%AE%89%E5%85%A8 [图片] 4 我摘录下 3.4 用户隐私和数据安全3.4.1 在收集和使用用户任何数据时,必须明确告知用户该数据的用途,确保经过用户明确同意和授权,并应在用户同意和授权的范围内进行合理使用。在用户注销帐号后应相应删除相关数据。数据包括但不限于获取地理位置、用户通讯录、用户手机号码等。 3.4.2 不得在小程序任何页面请求或诱导用户输入微信用户的用户名或密码。 3.4.3 不得将搜索小程序功能加入小程序。 3.4.4 不得在页面中进行或将通过小程序收集到的用户数据私下进行出售、转交、交易、越权披露或泄露。 3.4.5 不得在未经用户授权同意的情况下,显示用户相关数据,比如:头像,昵称等信息。 3.4.6 小程序不得要求用户降低手机操作系统安全性(如要求iPhone 用户越狱、Android 用户ROOT 等)后,方能使用相关功能。 3.4.7 若小程序有需要追踪用户的地理位置的功能,则必须提供退出该位置追踪的功能和明确指示。 整改方案根据上面提示,我们不难得出解决方案,本次具体整改方案如下: 1、将按钮的文字改为授权 2、在下面展示,收集这部分敏感信息的作用是什么,明确告知用户 整改前截图 [图片] 整改后截图 [图片] 5 整改效果该方案已经通过审核,并发布 [图片] 结论只要提供按钮用户授权,应该就可以,我回头这么操作下 如果有更好的方案可以评论区留言,非常感谢
2020-06-19 - 微信答题小程序用时计算逻辑梳理
这几天一直在监控我开发的党建答题小程序的数据,发现一个问题,就是用户答题的用时数据有些不准确 如下图所示排名第一的用户,20道题,即使无脑答题,也不至于用了5秒就完成了 [图片] 目前逻辑 通过倒计时来计算用时,这个时候如果倒计时由于按Home返回不再计算了,导致用时数据偏少 优化逻辑 记录两个时间戳, 1、开始答题时间戳 2、答题结束时间戳 用时数据通过这两个时间戳来计算,这种情况可以准确得到用户答题的用时数据 关于日期转时间戳的api var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; 具体逻辑 如果两个日期对象都是Date类型的话,可以直接相减,得到的就是毫秒数差。 得到了两个日期的毫秒差之后,就可以转化成具体的日期格式(xxxx年xx月xx天,xx小时xx分钟xx秒) 因为我们获取的是毫秒,所有要先转换成秒。1秒=1000毫秒 var new_date = new Date(); //新建一个日期对象,默认现在的时间 var old_date = new Date("2018-12-12 00:00:00"); //设置过去的一个时间点,"yyyy-MM-dd HH:mm:ss"格式化日期 var difftime = (new_date - old_date)/1000; //计算时间差,并把毫秒转换成秒 var days = parseInt(difftime/86400); // 天 24*60*60*1000 var hours = parseInt(difftime/3600)-24*days; // 小时 60*60 总小时数-过去的小时数=现在的小时数 var minutes = parseInt(difftime%3600/60); // 分钟 -(day*24) 以60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数 var seconds = parseInt(difftime%60); // 以60秒为一整份 取余 剩下秒数 alert("时间差是: "+days+"天, "+hours+"小时, "+minutes+"分钟, "+seconds+"秒"); 其他 关于日期一定要通过云函数获取服务端时间来算,而不是用客户端时间,这一点尤为需要注意。
2020-06-28