小程序云开发:联表数据查询 lookup 与云函数应用解析

2024-07-04
来源:网络整理

云开发就是让你用网络上的东西来做应用开发,比如管理数据和编写代码,挺方便的。其中有个联表查询,可以让你从很多表格里面查数据,结果会更详细。比如说我们要找出徐老大致的班里每个同学的平均分,那就要用这个查询了。

联表查就是把好几个表格用它们的共同点联系起来。拿我们这个例子来说,就是靠着那个叫ID的玩意儿把两个表格给串连起来的。这种方法在遇到复杂的数据关系时特别好用,比如说在学校里,老师、班级和学生这三者之间的关系,用这种方法就能方便快捷地搞定了。

如何在云开发中实现联表查询

lookup({
from: ,
localField: ,
foreignField: ,
as:
})

想玩转云开发里的联表查询?你得先搞定它的数据库操作。云开发这货给了我们不少好用的API和工具来搞这些事,比如存取、修改甚至是更高级的联表查询。要是懒得找,它还有详细教程教咱们怎么做!

lookup({
from: 'student',//要关联的表student
localField: 'id',//class表中的关联字段
foreignField: 'class_id',//student表中关联字段
as: 'stu'//定义输出数组的别名
})
.end()

咱们就拿刚才说的那个例子来说,首先得搞清楚怎么用查询语句把班级表跟学生表连起来,这里头就是要找好两个表格里能用来联系的字段。比方说,你可以选班级表上边的'ID'字段和学生表里对应的‘班级ID’字段来做连接。另外,别忘了告诉它哪些内容是你想看的,还要设置一些必要的筛选条件,比如只查徐老师教过的那帮学生。

{"list":
[{
"id":1,
"teacher":"王老师",
"cname":"一班",
"stu":[
{
"sname":"宁一",
"class_id":1,
"score":90
}
]
},
{
"id":2,
"teacher":"徐老师",
"cname":"二班",
"stu":[
{
"class_id":2,
"sname":"张二",
"score":100
},
{
"class_id":2,
"sname":"李二",
"score":80
}
]
}]
}

云函数的基本概念与应用

“云函数”就是云计算里的一种功能,能让我们在网上运行自己编的程序.有了它,就可以解决各种复杂的问题,比如处理大量数据或者跟其他网站交互等等。用云函数,可以保证你的代码安全可靠,特别适合做那种必须在电脑服务器上运行的活儿。

.lookup({
from: 'student',
localField: 'id',
foreignField: 'class_id',
as: 'stu'
})
.match({
teacher:"徐老师"
})
.end()

{"list":
[
{"_id":"5e847ab25eb9428600a512352fa6c7c4",
"id":2,
"teacher":"徐老师",
"cname":"二班",
//学生数据
"stu":[
{"_id":"37e26adb5eb945a70084351e57f6d717",
"class_id":2,
"sname":"张二",
"score":100
},
{"_id":"5e847ab25eb945cf00a5884204297ed8",
"class_id":2,
"sname":"李二",
"score":80
}
]
}
]
}

想象一下,咱们可以用云函数做联合查询,然后把查到的东西直接显示出来。怎么搞?就是在微信开发工具里造个云函数,里面搞点查询逻辑就行了。造好后设置起来也挺容易的,不过得有点编程知识才行。

在微信开发者工具中创建云函数

如何开发一个微信查成绩小程序_基于微信的成绩查询程序_微信小程序学生成绩查询源码

.lookup({
from: 'student',
pipeline: $.pipeline()
.group({
_id: null,
score: $.avg('$score')
})
.done(),
as: 'stu'
})
.match({
teacher:"徐老师"
})
.end()

想要在微信开发者工具里搞出个云函数来玩儿,得先翻过那道云开发环境的门槛,没开的话就按指南走。搞定之后,就在云开发控制台弄个新函数出来,就叫它"test"。

{"list":
[
{"_id":"5e847ab25eb9428600a512352fa6c7c4",
"id":2,
"teacher":"徐老师",
"cname":"二班",
"stu":[
{"_id":null,
"score":90
}
]
}
]
}

搞定了云函数以后,我们就得用微信开发者工具启动它,然后在里面搞清楚怎么查数据,首先是要连上数据库,再来就是设定询问的条件,最后还要处理回传回来的信息。写程序的时候,可得细心点,别粗心大意出问题!这样才能保证代码运行的顺畅高效,不会出现让人抓狂的性能问题!

.lookup({
from: 'student',
pipeline: $.pipeline()
.group({
_id: null,
score: $.avg('$score')
})
.done(),
as: 'stu'
})
.match({
teacher:"徐老师"
})
.replaceRoot({
newRoot: $.mergeObjects([$.arrayElemAt(['$stu', 0]), '$$ROOT'])
})
.project({
_id:0,
teacher:1,
score:1
})
.end()

测试云函数并打印查询结果

{"list":
[
{"score":90,"teacher":"徐老师"}
]
}

搞定了云函数,得检查下功能是不是正常,直接用微信开发者工具里的测试功能就成。点云端测试那个钮儿,就能让云函数跑起来,然后在控制台看结果就行。

希望一切顺利的话,我们能看到查询出的结果打印出来!这不仅有徐老师班上同学们的具体信息,还有他们的平均分数!这样一来,我们就能更好地掌握学生们的学习状况,为教育管理添砖加瓦~

总结与展望

看了这篇文章后,咱们知道了啥?首先就是云开发中的这个什么联表查询,怎么做,还有就是在云函数里用起来的办法。再说到微信开发者工具,得会用它去造个云函数试试手,顺便还要知道怎么把查出来的结果给打出来看看。这些东西都挺有用的,特别是你要搞个厉害的应用的话,比如说处理那些有关联的表格数据。

最后,朋友们,我有个问题问问大家:平时你们做软件开发时,遇到过哪些地方要用到联表查询?你们都是怎么处理这样的情况的?欢迎留言分享经验心得,或者点个赞、转发文章,把你们的知识分享给更多人!

分享