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


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之引用类型介绍
Aug 10 Javascript
如何用ajax来创建一个XMLHttpRequest对象
Dec 10 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
基于JQuery的列表拖动排序实现代码
Oct 01 Javascript
jquery实现网页查找功能示例分享
Feb 12 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
js中最容易被忽视的事件问题大总结
May 15 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
js实现返回顶部效果
Mar 10 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
Javascript实现异步编程的过程
Jun 18 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
Python字符编码判断方法分析
2016/07/01 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
分析经典Python开发工程师面试题
2019/04/08 Python
Python序列类型的打包和解包实例
2019/12/21 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
python 制作简单的音乐播放器
2020/11/25 Python
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
业务代表的岗位职责
2013/11/16 职场文书
讲解员培训方案
2014/05/04 职场文书
学生实习证明范文
2014/09/28 职场文书
飞越疯人院观后感
2015/06/09 职场文书
银行求职信怎么写
2019/06/20 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js