| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // 云函数入口文件
- const cloud = require('wx-server-sdk')
- cloud.init()
- const db = cloud.database()
- const _ = db.command
- const $ = db.command.aggregate
- // 云函数入口函数
- exports.main = async (event, context) => {
- const {
- OPENID
- } = cloud.getWXContext()
- if (event.manager) {
- const managers = await db.collection('manager')
- .aggregate()
- .match({
- user_id: OPENID
- })
- .skip(event.page_token)
- .limit(event.page_size)
- .lookup({
- from: 'publisher',
- localField: 'pub_id',
- foreignField: '_id',
- as: 'publisher'
- })
- .unwind('$publisher')
- .end()
- return {
- list: managers.list,
- next_page_token: event.page_token + managers.list.length,
- status: 'OK'
- }
- } else if (event.follow) {
- const publishers = await db.collection('publisher')
- .aggregate()
- .lookup({
- from: 'follow',
- let: {
- pub_id: '$_id'
- },
- pipeline: $.pipeline()
- .match(_.expr($.and([
- $.eq(['$user_id', OPENID]),
- $.eq(['$pub_id', '$$pub_id'])
- ])))
- .project({
- _id: 0,
- follow_time: 1
- }).done(),
- as: 'follow'
- })
- .unwind('$follow')
- .skip(event.page_token)
- .limit(event.page_size)
- .end()
- return {
- list: publishers.list,
- next_page_token: event.page_token + publishers.list.length,
- status: 'OK'
- }
- } else {
- const publishers = await db.collection('publisher')
- .aggregate()
- .skip(event.page_token)
- .limit(event.page_size)
- .end()
- return {
- list: publishers.list,
- next_page_token: event.page_token + publishers.list.length,
- status: 'OK'
- }
- }
- }
|