业务场景分析
小安向大家分享推荐了电视剧《觉醒年代》,朝阳为其点了个赞
因每个用户能分享推荐多个数据,每个数据又能被多个用户点赞,此为典型的多对多(N 对 N) 的数据关系,于是,此处可设计两个表,recommend表存储分享推荐的数据,agree 表存储用户对推荐内容的点赞。
recommend 表 – 推荐内容表
agree 表 – 用户对推荐内容的点赞
需求描述
在查询分享推荐列表时,需同时查询出每条分享推荐有哪些人点赞,并将点赞人的昵称展示在列表中。
实现方案:通过云函数进行联表查询
常规的微信云数据库查询无法实现联表查询,需借助云函数
创建云函数 getData_recommend
cloudfunctions\getData_recommend\index.js
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ // 使用当前云环境 env: cloud.DYNAMIC_CURRENT_ENV }) // 云函数入口函数 exports.main = async (event, context) => { // 主表 recommend return cloud.database().collection("recommend") .aggregate() .lookup({ // 外表 agree from: "agree", // recommend 表中的_id localField: '_id', // agree 表中的 targetID foreignField: 'targetID', // 从 agree 表中查询到的用户数据,通过 agreeInfo 字段返回 as: 'agreeInfo' }).limit(1).end() .then(res => { return res }) }
cloudfunctions\getData_recommend\package.json
{ "name": "getData_recommend", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "~2.6.3" } }
在获取目标推荐列表时,调用云函数 getData_recommend
即可得到需要的数据啦!