微信小程序提示db.RegExp is not a function(已解决)附加代码

博客指出微信小程序实现模糊搜索时,出现 db.RegExp is not a function 问题,主要原因是基础库版本太低,不支持正则表达式,需更改基础库版本,还给出了实现搜索的代码。

主要原因是因为小程序的基础库版本太低,不支持正则表达式,所以应该改下基础库的版本。

附加实现搜索的代码:

inputTyping: function (e) {

var that = this

db.collection('course').where({

//使用正则查询,实现对搜索的模糊查询

course_name: db.RegExp({

regexp: that.data.inputVal,

//从搜索栏中获取的value作为规则进行匹配。

options: 'i',

//大小写不区分

})

}).get({

success: res => {

console.log(res)

that.setData({

search_list: res.data

})

}

})

 

### 微信小程序记账本统计页面的代码实现 以下是一个完整的微信小程序记账本统计页面的代码实现,涵盖前端页面、云函数逻辑以及云数据库设计。 --- #### 1. 数据库设计 在微信小程序的云开发中,使用云数据库存储用户的记账数据。以下是记账数据集合的字段结构[^1]: ```json { "_id": "唯一标识", "userId": "用户ID", // 用户标识 "amount": 100, // 金额 "type": "income", // 类型(income或expense) "category": "工资", // 分类(如工资、餐饮等) "date": "2023-10-01", // 记账日期 "note": "备注" // 备注信息 } ``` 通过上述结构,可以方便地查询用户的收入、支出、分类占比等统计数据。 --- #### 2. 云函数实现 云函数用于处理后端逻辑,例如从云数据库中提取统计数据并返回给前端。以下是一个示例云函数代码,用于获取某用户某月的收入和支出总额: ```javascript // 云函数入口文件 const cloud = require('wx-server-sdk'); cloud.init(); exports.main = async (event, context) => { const db = cloud.database(); const { userId, yearMonth } = event; // 获取传入的用户ID和年月参数 // 查询当月收入总额 const incomeResult = await db.collection('account') .where({ userId: userId, type: 'income', date: db.RegExp({ regex: `${yearMonth}-`, options: 'g' }) // 匹配日期 }) .sum('amount'); // 查询当月支出总额 const expenseResult = await db.collection('account') .where({ userId: userId, type: 'expense', date: db.RegExp({ regex: `${yearMonth}-`, options: 'g' }) // 匹配日期 }) .sum('amount'); return { incomeTotal: incomeResult.sum.amount || 0, expenseTotal: expenseResult.sum.amount || 0 }; }; ``` 此云函数接收用户ID和年月参数,返回指定月份的收入和支出总额[^3]。 --- #### 3. 前端实现 在前端页面中,可以通过 `wx.cloud.callFunction` 调用云函数获取统计数据,并将其展示在页面上。以下是一个简单的 WXML 和 JavaScript 示例: ##### WXML ```xml <view class="container"> <text>总收入:{{incomeTotal}} 元</text> <text>总支出:{{expenseTotal}} 元</text> <text>结余:{{balance}} 元</text> </view> ``` ##### JavaScript ```javascript Page({ data: { incomeTotal: 0, expenseTotal: 0, balance: 0 }, onLoad(options) { const userId = wx.getStorageSync('userId'); // 获取用户ID const yearMonth = options.yearMonth; // 获取传递的年月参数 wx.cloud.callFunction({ name: 'getMonthlyStats', // 调用云函数名称 data: { userId: userId, yearMonth: yearMonth } }).then(res => { const { incomeTotal, expenseTotal } = res.result; this.setData({ incomeTotal: incomeTotal, expenseTotal: expenseTotal, balance: incomeTotal - expenseTotal }); }).catch(err => { console.error('调用云函数失败', err); }); } }); ``` --- #### 4. 统计图表展示 为了更直观地展示数据,可以使用第三方图表库(如 ECharts for Weixin)绘制饼图或柱状图。以下是绘制年度消费类型占比饼图的示例: ##### WXML ```xml <canvas canvas-id="categoryChart" id="categoryChart"></canvas> ``` ##### JavaScript ```javascript Page({ onReady() { const ctx = wx.createCanvasContext('categoryChart'); wx.cloud.callFunction({ name: 'getCategoryStats', // 调用云函数获取分类统计数据 data: { userId: wx.getStorageSync('userId'), year: new Date().getFullYear() } }).then(res => { const chartData = res.result; this.drawPieChart(ctx, chartData); }); }, drawPieChart(ctx, data) { let startAngle = -Math.PI / 2; data.forEach(item => { const endAngle = startAngle + item.percentage * 2 * Math.PI; ctx.beginPath(); ctx.moveTo(150, 150); // 圆心坐标 ctx.arc(150, 150, 100, startAngle, endAngle); ctx.closePath(); ctx.setFillStyle(item.color); ctx.fill(); startAngle = endAngle; }); ctx.draw(); } }); ``` --- ### 注意事项 - 确保用户数据的安全性,避免敏感信息泄露。 - 在云函数中对输入参数进行校验,防止非法请求。 - 如果需要支持更大的数据量或复杂的查询逻辑,可以考虑使用 MySQL 云数据库配合 Python 后端服务。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值