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


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 相关文章推荐
基于Jquery的动态添加控件并取值的实现代码
Sep 24 Javascript
Jquery之美中不足小结
Feb 16 Javascript
jquery获取一组checkbox的值(实例代码)
Nov 04 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
Oct 11 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
Jan 27 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
Express框架之connect-flash详解
May 31 Javascript
关于laydate.js加载laydate.css路径错误问题解决
Dec 27 Javascript
详解Node 定时器
Feb 26 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
Oct 14 Javascript
uniapp,微信小程序中使用 MQTT的问题
Jul 11 Javascript
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编程注意事项的小结
2013/04/27 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python入门篇之字典
2014/10/17 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python打开使用的方法
2019/09/30 Python
python连接mysql有哪些方法
2020/06/24 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
公司应聘求职信
2014/06/21 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
户外亲子活动总结
2015/05/08 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js