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


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(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
Mar 10 Javascript
Array 重排序方法和操作方法的简单实例
Jan 24 Javascript
js中键盘事件实例简析
Jan 10 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
React Native中Mobx的使用方法详解
Dec 04 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
Aug 20 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
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 get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
基于php缓存的详解
2013/05/15 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
vue初始化动画加载的实例
2018/09/01 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
python去除字符串中的换行符
2017/10/11 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
servlet面试题
2012/08/20 面试题
李培根演讲稿
2014/05/22 职场文书
科技工作者先进事迹
2014/08/16 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2015年测量员工作总结
2015/05/23 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang