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


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 小贴士一星期合集
Apr 07 Javascript
js创建子窗口并且回传值示例代码
Jul 02 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
vue插件vue-resource的使用笔记(小结)
Aug 04 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
VueQuillEditor富文本上传图片(非base64)
Jun 03 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
基于jQuery的星级评分插件
2011/08/12 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
详解cordova打包成webapp的方法
2017/10/18 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python实现百万答题自动百度搜索答案
2018/01/16 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
python模拟实现分发扑克牌
2020/04/22 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
企业人事任命书
2014/06/05 职场文书
平安工地汇报材料
2014/08/19 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
2015年酒店工作总结
2015/04/28 职场文书
高中生物教学反思
2016/02/20 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python