跳到主要内容

章节 3:实现数据查询和展示

微搭提供了「自定义变量」、「组件方法」等概念,帮助您快速搭建页面数据交互逻辑。

在这个章节中,我们实现简单的数据查询操作,并将结果展示在表格中。

第 1 步:新建 query 变量

首先我们需要一个自定义变量来保存用户输入的查询条件,这里我们简单实现 <字段名>:<字段值> 这样格式的查询条件。

点击编辑器顶部「变量」选项,新建一个变量,名称为 query,变量类型为 对象,数据类型为 JSON,默认值为 {}

第 2 步:实现 query 的赋值操作

接下来,我们将输入框中获取到的用户输入值,通过“查询”按钮的点击事件赋值到 query 变量中。

点击「查询」按钮,在事件配置中,将「点击」事件配置为「变量赋值」

变量名选择 query,变量值点击右侧「绑定表达式」后,设置为:

(function () {
// 从 $w.input1 中取得输入框的值
const input = $w.input1.value;
if (!input) return {};
// 使用":"字符分割字段名和字段值
const [key, value] = input.split(":");
// 返回query对象
return {
[key]: value,
};
})();

第 3 步:数据查询绑定 query 变量

下面我们在数据查询中,加入 query 变量作为入参,使得数据表格中的数据可以被条件查询所筛选。

首先我们修改先前创建的数据源方法,使得它可以接收 query 作为参数,并且使用 query 进行数据筛选。

在入参中加入 query,类型为文本:

自定义代码修改为如下:

const cloudbase = require("@cloudbase/node-sdk");

const envId = "<云开发环境ID>";
const collectionName = "<云数据库集合名>";

const app = cloudbase.init({
env: envId,
});

const db = app.database();

module.exports = async (event, context) => {
// 加入 query 参数
let { pageNo, pageSize, query: qs } = event;
if (pageNo < 1) pageNo = 1;

// 加入对 qs 的逻辑处理
qs = qs ? JSON.parse(qs) : {};
const query = db.collection(collectionName).where(qs);

const recordsRes = await query
.skip((pageNo - 1) * pageSize)
.limit(pageSize)
.get();
const totalRes = await query.count();

return {
records: recordsRes.data,
total: totalRes.total,
};
};

回到编辑器,选择数据表格组件,在「数据」配置面板中,将 query 参数绑定表达式,值为 JSON.stringify($page.dataset.state.query)

完成后,您应该可以在输入框中以 <字段名>:<字段值> 的形式输入查询条件,点击“查询”按钮后,查询的结果数据便可以展示在表格中:

后续

在这个章节中,我们构建了简易的数据查询、筛选流程。

接下来我们为这个管理面板添加更多的功能,请前往下一章 章节 4:实现数据编辑