- 各位大神,这个demo怎么改成联表查询?
[代码]const cloud = require('wx-server-sdk')cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV})const db = cloud.database()const MAX_LIMIT = 100exports.main = async (event, context) => { // 先取出集合记录总数 const countResult = await db.collection('todos').count() const total = countResult.total // 计算需分几次取 const batchTimes = Math.ceil(total / 100) // 承载所有读操作的 promise 的数组 const tasks = [] for (let i = 0; i < batchTimes; i++) { const promise = db.collection('todos').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get() tasks.push(promise) } // 等待所有 return (await Promise.all(tasks)).reduce((acc, cur) => { return { data: acc.data.concat(cur.data), errMsg: acc.errMsg, } })}[代码] // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database({env:'pmis - 4c63d'}) const $ = db.command.aggregate const _=db.command const MAX_LIMIT = 100 // 云函数入口函数 exports.main = async(event, context) => { const countResult = await db.collection('jxgs').aggregate() .lookup({ from: 'jxgsquexian', let: { bdzname: '$bdzname', sbyxbh: '$sbyxbh' }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$bdzname', '$$bdzname']), $.eq(['$sbyxbh', '$$sbyxbh']) ]))) .done(), as: 'quanxianList', }).count("total").end(); const total = countResult.total // 计算需分几次取 const batchTimes = Math.ceil(total / MAX_LIMIT) // 承载所有读操作的 promise 的数组 const tasks = [] for (let i = 0; i < batchTimes; i++) { const promise = db.collection('jxgs').aggregate() .lookup({ from: 'jxgsquexian', let: { bdzname: '$bdzname', sbyxbh: '$sbyxbh' }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$bdzname', '$$bdzname']), $.eq(['$sbyxbh', '$$sbyxbh']) ]))) .done(), as: 'quanxianList', }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).end(); tasks.push(promise); } // 等待所有 return (await Promise.all(tasks)).reduce((acc, cur) => { return { data: acc.data.concat(cur.data), errMsg: acc.errMsg, } }) } 这么改有什么问题?折腾好几天了,哪位大神指点一下
2019-11-16 - 聚合联表查询,返回数据超过100条,程序代码这么写有什么问题?怎么返回不了数据
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database({env:'pmis - 4c63d'}) const $ = db.command.aggregate const _=db.command const MAX_LIMIT = 100 // 云函数入口函数 exports.main = async(event, context) => { const countResult = await db.collection('jxgs').aggregate() .lookup({ from: 'jxgsquexian', let: { bdzname: '$bdzname', sbyxbh: '$sbyxbh' }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$bdzname', '$$bdzname']), $.eq(['$sbyxbh', '$$sbyxbh']) ]))) .done(), as: 'quanxianList', }).count("total").end(); const total = countResult.total // 计算需分几次取 const batchTimes = Math.ceil(total / MAX_LIMIT) // 承载所有读操作的 promise 的数组 const tasks = [] for (let i = 0; i < batchTimes; i++) { const promise = db.collection('jxgs').aggregate() .lookup({ from: 'jxgsquexian', let: { bdzname: '$bdzname', sbyxbh: '$sbyxbh' }, pipeline: $.pipeline() .match(_.expr($.and([ $.eq(['$bdzname', '$$bdzname']), $.eq(['$sbyxbh', '$$sbyxbh']) ]))) .done(), as: 'quanxianList', }).skip(i * MAX_LIMIT).limit(MAX_LIMIT).end(); tasks.push(promise); } // 等待所有 return (await Promise.all(tasks)).reduce((acc, cur) => { return { data: acc.data.concat(cur.data), errMsg: acc.errMsg, } }) }
2019-11-16