微信小程序开发中数据分类的几种方法,你知道麽?

微信小程序开发中数据分类的几种方法,你知道麽?

  • 测试数据举例
  • 方法一:直接利用云函数对数据值进行分类
    • 云函数代码
    • js代码调用
  • 方法二:先获取数据再在本地中进行分类
    • 第一步:先通过云函数读取集合内所有的数据
    • 第二步:在本地当中进行分类
  • 它们各自的优点和场景适用
    • 优点
    • 使用场景
  • 应用

测试数据举例

以下是我们的场景
1、我们在云开发数据库中有一个以demo为名字的集合
2、demo中有5条记录,我们将五条记录放在数组当中,记录如下:

[
    {name:'王八',sex:'男',class:'一班'},
    {name:'赵美丽',sex:'女',class:'二班'},
    {name:'王刚',sex:'男',class:'三班'},
    {name:'李小芳',sex:'女',class:'四班'},
    {name:'张丽丽',sex:'女',class:'三班'},
]

3、需求:需要我们分类出班级,输出格式如下:

['一班','二班','三班','四班']

方法一:直接利用云函数对数据值进行分类

云函数代码

我们在这里命名云函数为:demoFunction

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
/* 连接云数据库 */
const db =cloud.database()
const $ = db.command.aggregate
// 云函数入口函数
exports.main = async (event, context) => {
    return await db.collection('demo')
    .aggregate()
    .group({
      _id:null,
      categories: $.addToSet('$class')
    })
    .end()
    console.log('调用成功');
}

首先,代码通过 require(‘wx-server-sdk’) 导入了 wx-server-sdk 模块,用于初始化云函数环境。
然后,通过 cloud.init() 方法初始化云环境,使用 cloud.DYNAMIC_CURRENT_ENV 来指定当前云环境。
接下来,代码通过 cloud.database() 获取了数据库实例,并将其赋值给 db 变量。在云函数的入口函数 exports.main 中,代码使用 db.collection(‘demo’) 获取了名为 demo 的集合,并开始进行聚合操作。 聚合操作使用了 aggregate() 方法创建一个聚合管道。在聚合管道中,代码调用了 group() 方法进行分组操作。group()方法传入一个对象,其中 _id 字段设置为 null,表示不按照任何字段进行分组。而 categories 字段使用了 . a d d T o S e t ( ′ .addToSet(' .addToSet(class’),表示将 class 字段的值添加到一个集合中。
最后,代码调用了 end() 方法结束聚合操作,并返回聚合结果。

这段代码的作用是在 demo 集合中进行聚合操作,将 class 字段的值按照不重复的方式存储到 categories数组中,并返回聚合结果。

js代码调用

wx.cloud.callFunction({
       name:'demoFunction',
        success:(res)=>{
            console.log(res);
        }
  })

方法二:先获取数据再在本地中进行分类

第一步:先通过云函数读取集合内所有的数据

1、云函数demoFunction

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db= cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
        return await db.collection('demo').get({
            success:(res)=>{
                console.log('其他',res.data);
            }
        })
    
}

2、js调用云函数

wx.cloud.callFunction({
       name:'demoFunction',
        success:(res)=>{
            console.log(res);
        }
  })

3、得到如下并给其赋值给变量:testData

[
    {name:'王八',sex:'男',class:'一班'},
    {name:'赵美丽',sex:'女',class:'二班'},
    {name:'王刚',sex:'男',class:'三班'},
    {name:'李小芳',sex:'女',class:'四班'},
    {name:'张丽丽',sex:'女',class:'三班'},
]

第二步:在本地当中进行分类

4、对testData进行处理

/* 分类
 1、遍历数组
 2、筛选
 3、得到resultArray原始 ["java", "小程序", "python", "PHP", "MySQL"]
 4、新建数组,构造完整 const modifiedResultArray = ['全部', ...resultArray];
 输出结构:["全部", "java", "小程序", "python", "PHP", "MySQL"]
*/
 const valuesSet = new Set();
 testData.forEach(obj => {
     const value = obj.kind;
     valuesSet.add(value);
 });
 const resultArray = Array.from(valuesSet);
 console.log(resultArray);

5、结果

['一班','二班','三班','四班']

它们各自的优点和场景适用

优点

1、云函数处理:由于云开发的的云函数每次取值只能取100条的限制,直接使用云函数调用聚合可以从整个集合中分出类。
2、本地分类:能够节省云函数调用次数,节省资源,减轻服务器负担。

使用场景

1、云函数:数据量庞大
2、本地:
2.1数据量小,不用做分页处理,比如小于100条记录时。
2.2当使用传统前后端数据传参时,由于wx.request返回值可以不受100条记录限制,所有可以使用本地进行分类。

应用

微信小程序开发中数据分类的几种方法,你知道麽?_第1张图片

你可能感兴趣的:(微信小程序开发,微信小程序,notepad++,小程序)