微信小程序云开发实现数据添加、查询和分页


Posted in Javascript onMay 17, 2019

本文实例为大家分享了微信小程序云开发实现数据添加、查询和分页,供大家参考,具体内容如下

实现的效果

微信小程序云开发实现数据添加、查询和分页

实现要点

WXML 不同类别数据的显示

通过 if-elif-else 实现,在wxml文件中通过 <block></block>渲染,因为它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。也就是说可以通过属性来控制页面是否要渲染这部分的内容,可以减少页面渲染时间。
云开发数据的获取

先开通云开发功能 ,参考官方文档,然后在创建项目的时候勾选上 使用云开发模板(看个人吧,我直接使用后点击项目中的 login)就可以获取到用户的oppenid,之后就可以使用云数据库了。

云开发登录:

微信小程序云开发实现数据添加、查询和分页

云数据的获取

微信小程序云开发实现数据添加、查询和分页

/**
 * 生命周期函数--监听页面加载
 */
 onLoad: function(options) {
 console.log('onload');
 this.getData(this.data.page); 
 },
 /**
 * 获取列表数据
 * 
 */
 getData: function(page) {
 var that = this;
 console.log("page--->" + page);
 const db = wx.cloud.database();
 // 获取总数
 db.collection('topic').count({
  success: function(res) {
  that.data.totalCount = res.total;
  }
 })
 // 获取前十条
 try {
  db.collection('topic')
  .where({
   _openid: 'oSly***********vU1KwZE', // 填入当前用户 openid
  })
  .limit(that.data.pageSize) // 限制返回数量为 10 条
  .orderBy('date', 'desc')
  .get({
   success: function(res) {
   // res.data 是包含以上定义的两条记录的数组
   // console.log(res.data)
   that.data.topics = res.data;
   that.setData({
    topics: that.data.topics,
   })
   wx.hideNavigationBarLoading();//隐藏加载
   wx.stopPullDownRefresh();
   
   },
   fail: function(event) {
   wx.hideNavigationBarLoading();//隐藏加载
   wx.stopPullDownRefresh();
   }
  })
 } catch (e) {
  wx.hideNavigationBarLoading();//隐藏加载
  wx.stopPullDownRefresh();
  console.error(e);
 }
 },

云数据的添加

/**
 * 保存到发布集合中
 */
 saveDataToServer: function(event) {
 var that = this;
 const db = wx.cloud.database();
 const topic = db.collection('topic')
 db.collection('topic').add({
  // data 字段表示需新增的 JSON 数据
  data: {
  content: that.data.content,
  date: new Date(),
  images: that.data.images,
  user: that.data.user,
  isLike: that.data.isLike,
  },
  success: function(res) {
  // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
  // 清空,然后重定向到首页
  console.log("success---->" + res)
  // 保存到发布历史
  that.saveToHistoryServer();
  // 清空数据
  that.data.content = "";
  that.data.images = [];

  that.setData({
   textContent: '',
   images: [],
  })

  that.showTipAndSwitchTab();

  },
  complete: function(res) {
  console.log("complete---->" + res)
  }
 })
 },

云数据的删除

可查看官放文档,这里不贴代码了,有问题联系。

云数据的更新

可查看官放文档,这里不贴代码了,有问题联系。

数据列表的分页

主要就是定义一个临时数组存放加载上来的数据,然后通过传递给对象,最后传递到布局中去。 

/**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function() {
 var that = this;
 var temp = [];
 // 获取后面十条
 if(this.data.topics.length < this.data.totalCount){
 try {
 const db = wx.cloud.database();
 db.collection('topic')
  .skip(5)
  .limit(that.data.pageSize) // 限制返回数量为 5 条
  .orderBy('date', 'desc') // 排序
  .get({
  success: function (res) {
  // res.data 是包含以上定义的两条记录的数组
  if (res.data.length > 0) {
  for(var i=0; i < res.data.length; i++){
   var tempTopic = res.data[i];
   console.log(tempTopic);
   temp.push(tempTopic);
  }

  var totalTopic = {};
  totalTopic = that.data.topics.concat(temp);

  console.log(totalTopic);
  that.setData({
   topics: totalTopic,
  })
  } else {
  wx.showToast({
   title: '没有更多数据了',
  })
  }


  },
  fail: function (event) {
  console.log("======" + event);
  }
  })
 } catch (e) {
 console.error(e);
 }
 }else{
 wx.showToast({
 title: '没有更多数据了',
 })
 }
 
 },

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

Javascript 相关文章推荐
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 Javascript
JavaScript获取URL参数的方法之一
Mar 24 Javascript
JS返回顶部实例代码
Aug 09 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
js常用正则表达式集锦
May 17 #Javascript
Angular请求防抖处理第一次请求失效问题
May 17 #Javascript
vue cli 3.0 搭建项目的图文教程
May 17 #Javascript
小程序云开发如何实现图片上传及发表文字
May 17 #Javascript
tsconfig.json配置详解
May 17 #Javascript
小程序云函数调用API接口的方法
May 17 #Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
May 17 #Javascript
You might like
php中explode与split的区别介绍
2012/10/03 PHP
php计算税后工资的方法
2015/07/28 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
webpack优化的深入理解
2018/12/10 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
深入理解python函数递归和生成器
2016/06/06 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python实现名片管理系统项目
2019/04/26 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
食品安全承诺书
2014/05/22 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
最感人的道歉情书
2015/05/12 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android