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


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 相关文章推荐
用JavaScript事件串连执行多个处理过程的方法
Mar 09 Javascript
js 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
Div Select挡住的解决办法
Aug 07 Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
Mar 29 Javascript
vue数据传递--我有特殊的实现技巧
Mar 20 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
Oct 12 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中apc缓存使用示例
2013/12/25 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
JS打开新窗口的2种方式
2013/04/18 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python使用配置文件过程详解
2019/12/28 Python
Python如何将装饰器定义为类
2020/07/30 Python
pandas apply多线程实现代码
2020/08/17 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
公务员更新知识培训实施方案
2014/03/31 职场文书
基层党员公开承诺书
2014/05/29 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS