微信小程序开发---连接云开发数据库,实现数据获取

article/2025/11/10 1:16:31

之前几篇博客里面都详细交代了如何配置云函数,现在就讲一下关于云函数中数据库的使用,主要是讲如何从云开发平台的数据库中调取数据

我们直接来到需要调用数据库数据的页面的js文件,直接设置全局变量,来便于后续调用数据库

const db = wx.cloud.database().collection('数据库集合名称');

如果需要同时访问数据库中的多张表那么就需要设置多个变量,并且要重复多次查询

在这里插入图片描述

在这里插入图片描述
接下来,我们就是在需要在相应页面的WXML页面设置调用数据库的触发事件,你可以选择使用button,并绑定好数据获取的事件

在这里插入图片描述

接下来就要回到js页面进行相应函数的编写

 getmessage(){db.get({success:function(res){//打印获取到的数据console.log(res)}})}

在这里插入图片描述

上面是直接将对应集合中的所有数据从数据库中取出,但我们点击按钮数据就会打印,前提是数据的集合中需要有数据

在这里插入图片描述

如果发现数据库中的表有数据,自己的操作和代码都没有问题,那么你就去云开发的控制平台看一下你的集合的数据权限要将其改为所有用户可读,仅创建者可读写

在这里插入图片描述

上面是讲全部数据取出来,但是有时我们不需要那么多的数据,我们需要的数据往往只有那么几个,那么接下来我们就可以编写代码对数据进行筛选,筛选方法是博主根据所学数据结构编写,可能没有那么专业,如果有更好的方法,或者方法有什么错误,还请指正

    getmessage(){let _this = this;db.get({success:function(res){//打印获取到的数据console.log(res.data)//对渠道的值赋值_this.setData({message:res.data})//对数据进行筛选for(var i = 0;i < res.data.length;i++) {//查找所有数据中category属性为中药的数据字段if(message[i]["category"] != '中药') {//不为中药就将其删除//splice(i,j)方法从数组第一个元素起删除接下去的j个元素message.splice(i,1);i--;}}}})},

这里最主要的就是先设置变量_this = this,这里因为this是希望它指向的是pages这个对象,并且调用有this.setData函数也是想对pages里面data里的数据进行修改,但是如果我们不提前设置变量来存储指向pages的指针,那么我们进入db.get函数里面this指向的就是db这个对象,因此这里要十分注意!!!

上面我们说了怎么从数据库里获取数据,以及怎么筛选数据,但是我们每次都要筛选数据,如果数据太多我们就会加载的很慢,他又要获取全部数据,又要筛选数据,它的时间复杂度就是O(2n),那怎么样才能让数据加载时间慢一点呢,那么下面将的就是关于数据获取的详细查找

这里介绍的是集合的详细查找,上面的方法是可以从数据库里面获取到数据,但是如果有很多数据,但是我们需要的只是某个或者某几个对应属性的数据,那就很不方便,我们就可以添加where进行数据请求时的筛选

   getmessage_1(){db.where({'属性名':'要取出的数据对应的属性名'}).get({success:function(res){console.log(res)//打印取到的数据}})}

在这里插入图片描述
这样我们就能获取到name属性值为235的数据字段。

上面给大家讲述了关于数据库获取数据的全局获取,以及特定获取,对于这两种方式是各有利弊,第一种呢,是在第一次获取数据的时候是比较慢的,但是只要我们第一次数据获取到之后,存在本地,那么对于后面数据的获取是很快捷的,第二种方式的话不管在那一次查找数据查找的时间复杂度都是O(n),比较稳定,但是这需要我们在请求其他数据时又要去访问数据库,也是稍显麻烦,对于两种方法应该在实际开发过程中进行选择,没有那个一定是最好的。

下面就是关于对于云开发平台数据库数据获取只能获取到20条数据的解决办法,这个是实际存在的问题,如果你的集合中数据数超过20条你就只能获取到前20条数据,从而导致数据库中的数据不能全部获取到,因此我们需要采用分段获取数据的方法来获取数据。

并且我们在获取数据库数据的时候不一定就是需要点击按键事件来实现,一般我们是可以放到页面加载的时候就获取,就可以实现我们打开某个页面时数据就会展现在用户面前,因此我们一般就把数据库数据获取的工作放在小程序生命周期函数onLoad函数里。

 async onLoad(){//获取数据库容量let count = await db.count();count = count.total;//存储数据库内容let list=[];for(var i = 0;i < count;i += 20) {//每次获取数据库20条数据const promise = await db.skip(i).get();//将每次取到的数据值拼接到list数组里面list = list.concat(promise.data);}//数据的的赋值this.setData({ message:list })},

注意onload函数前面一定要添加async,这样就解决了数据库数据获取超20条的问题啦


http://chatgpt.dhexx.cn/article/ljNmRl5X.shtml

相关文章

微信小程序查询数据库

微信小程序云开发的官方例子&#xff1a; const db wx.cloud.database() //获取数据库的引用 const _ db.command //获取数据库查询及更新指令 db.collection("china") //获取集合china的引用.where({ //查询的条件指令wheregdp: _.gt(3000) …

微信小程序云数据库操作

微信小程序云数据库操作 1、云数据库简介1.1 数据类型Date地理位置Null 1.2 权限控制 2、云数据库操作2.1 查询数据2.1.1 通过collection.doc获取一条记录2.1.2 通过collection.get获取所有记录的数据2.1.3 通过document.get获取某一条记录的数据2.1.4 通过collection.count获取…

微信小程序取本地数据库数据(实测有图)

测试效果如下&#xff1a; 本实验主要分为如下几个步骤&#xff1a; 一、安装数据库 二、安装PHPApache 三、编辑微信小程序代码 前两项的简单介绍在如下连接&#xff1a; PHPApache 四、本文主要介绍第三项的内容 需要用到的文件如下&#xff1a; 1、新建微信小程序工程 2、…

微信小程序云开发(数据库)

开发者可以使用云开发开发微信小程序、小游戏&#xff0c;无需搭建服务器&#xff0c;即可使用云端能力。 云开发为开发者提供完整的云端支持&#xff0c;弱化后端和运维概念&#xff0c;无需搭建服务器&#xff0c;使用平台提供的 API 进行核心业务开发&#xff0c;即可实现快…

微信小程序云开发(云数据库篇)

微信小程序云开发[云数据库篇] 云数据库关系型数据库和 JSON 数据库对比数据类型数据库操作联表查询事务处理 云数据库 云开发提供了一个 JSON 数据库&#xff0c;顾名思义&#xff0c;数据库中的每条记录都是一个 JSON 格式的对象。 一个数据库可以有多个集合&#xff08;相当…

微信小程序云开发 1 - 数据库

微信小程序云开发最重要的有两点&#xff1a; 1、云数据库&#xff1b; 2、云函数&#xff1b; 学会这两点基本就能够进行微信小程序的云开发&#xff1b; 首先&#xff0c;我们先看微信小程序云数据库的基本操作&#xff1a; 1&#xff09;打开微 信开发者工具&#xff0…

微信小程序笔记 -- 数据库

6.15 学习微信小程序 -- 数据库 数据库1. 初始化2. 数据库操作2.1 数据类型2.2 增删查改2.2.1 增加/插入 数据&#xff08;add方法&#xff09;2.2.2 删除数据&#xff08;remove方法&#xff09;2.2.3 查看数据&#xff08;get&#xff0c;where&#xff09;2.2.4 更新数据&am…

nohup忽略SIGHUP信号

今天遇到一个问题&#xff1a;开启终端启动gunicorn进程后台运行&#xff0c;终端不关闭时&#xff0c;可以导入excel&#xff0c;关闭终端后&#xff0c;不能导入excel。原因是&#xff0c;xlrd模块需要向控制台输出内容&#xff0c;终端关闭后&#xff0c;控制台消失&#xf…

sighup问题

2019独角兽企业重金招聘Python工程师标准>>> SIGHUP会在以下3种情况下被发送给相应的进程&#xff1a; 1、终端关闭时&#xff0c;该信号被发送到session首进程以及作为job提交的进程&#xff08;即用 & 符号提交的进程&#xff09; 2、session首进程退出时&…

Linux——1、守护进程、SIGHUP与nohup

一、守护进程 脱离于终端并且在后台运行的进程&#xff0c;用于长期运行&#xff0c;守护自己的职责&#xff08;如&#xff1a;监听端口、服务等&#xff09;。 1、特点&#xff1a; 不受用户登录、注销影响。大多数Linux下的服务器都是利用守护进程实现的&#xff0c;如My…

Failed to ignore SIGHUP: No error

memcache下载:https://www.runoob.com/memcached/window-install-memcached.html 下载下来需要install一下: c:\memcached\memcached.exe -d install c:\memcached\memcached.exe -d start c:\memcached\memcached.exe -d stop 然后报错: 我下载的版本是1.4.5按照网上说的: 以…

安装Memcached:Failed to ignore SIGHUP: No error 解决方式

Memcached安装1.4.5 版本 管理员运行cmd&#xff0c;出现如下错误&#xff1a; 解决方式&#xff1a; 命令行中输入schtasks /create /sc onstart /tn memcached /tr "c:\memcached\memcached.exe -m 512",回车 注意&#xff1a;c:\memcached\memcached.exe替换自己…

系统信号(SIGHUP ,SIGPIPE,SIGURG)

对于信号的介绍&#xff0c;我再前面的一篇博客中做过专门的总结&#xff0c;感兴趣的可以看看。本文主要介绍在网络编程中几个密切相关的函数&#xff1a;SIGUP&#xff0c;SIGPIPE&#xff0c;SIGURG。 SIGHUP信号 在介绍SIGHUP信号之前&#xff0c;先来了解两个概念&#x…

PostgreSQL参数重载信号SIGHUP的处理

前边讲过&#xff0c;配置文件重载可以使用SIGHUP信号&#xff0c;也可以使用 pg_ctl reload&#xff0c;后者实际上也是发送SIGHUP给postmaster。 1、postmaster 的SIGHUP处理 下边的代码位于 src/backend/postmaster/postmaster.c 中的函数 SIGHUP_handler&#xff1a; erepo…

Unix/Linux编程:SIGHUP信号

当会话首进程打开了一个控制终端之后它同时也成为了该终端的控制进程&#xff1b;当一个控制进程失去其终端连接后&#xff0c;内核会向其发送一个SIGHUP信号来通知它这一事实(还会发送一个SIGCONT信号以确保当该进程之前被一个信号停止时重新开始该进程)。一般来讲&#xff0c…

Linux(程序设计):59---SIGHUP、SIGPIPE、SIGURG信号处理(附SIGURG信号处理普通数据与外带数据案例)

本文介绍3个与网络编程有关的3个信号 一、SIGHUP信号处理 信号产生的情景&#xff1a; 1.如果终端接口检测到一个连接断开&#xff0c;则将此信号送给与该终端相关的控制进程&#xff08;会话首进程&#xff09; 此信号被送给session结构中s_leader字段所指向的进程。仅当终端…

图解sql server 命令行工具sqlcmd的使用

一 操作实例 安装了sql server后此工具已经有了&#xff1b; 以sa登录&#xff1b; 打个命令&#xff0c;没反映&#xff1b; 可执行操作系统命令&#xff1b;加上!!即可&#xff1b; 查看帮助&#xff1b; 再打命令&#xff0c;也没反映&#xff1b;查询结果不显示&#xff1…

在ubuntu中使用命令行工具sqlcmd连接sql server数据库

步骤&#xff1a; 首先安装sqlcmd工具 注意&#xff1a;如果你连接的用户是 root用户&#xff0c;命令中带有 sudo 的&#xff0c;sudo都可以酌情去掉&#xff0c;不行再加上 1 安装curl软件包&#xff1a; sudo apt install curl 2 导入公共存储库 GPG 密钥 curl https:…

ssms,新建查询设置字体_如何在SSMS查询编辑器中使用SQLCMD命令

ssms,新建查询设置字体 SQLCMD Mode allows creating, testing, executing SQLCMD commands or scripts in SQL Server Management Studio directly in the query editor. This option is available since SQL Server 2005. SQLCMD模式允许直接在查询编辑器中在SQL Server Man…

使用SQLCMD在SQLServer执行多个脚本

使用SQLCMD在SQLServer执行多个脚本 概述&#xff1a; 作为DBA&#xff0c;经常要用开发人员提供的SQL脚本来更新正式数据库&#xff0c;但是一个比较合理的开发流程&#xff0c;当提交脚本给DBA执行的时候&#xff0c;可能已经有几百个sql文件&#xff0c;并且有执行顺序&…