index.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // 云函数入口文件
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. const db = cloud.database()
  5. const _ = db.command
  6. const $ = db.command.aggregate
  7. // 云函数入口函数
  8. exports.main = async (event, context) => {
  9. const {
  10. OPENID
  11. } = cloud.getWXContext()
  12. if (event.manager) {
  13. const managers = await db.collection('manager')
  14. .aggregate()
  15. .match({
  16. user_id: OPENID
  17. })
  18. .skip(event.page_token)
  19. .limit(event.page_size)
  20. .lookup({
  21. from: 'publisher',
  22. localField: 'pub_id',
  23. foreignField: '_id',
  24. as: 'publisher'
  25. })
  26. .unwind('$publisher')
  27. .end()
  28. return {
  29. list: managers.list,
  30. next_page_token: event.page_token + managers.list.length,
  31. status: 'OK'
  32. }
  33. } else if (event.follow) {
  34. const publishers = await db.collection('publisher')
  35. .aggregate()
  36. .lookup({
  37. from: 'follow',
  38. let: {
  39. pub_id: '$_id'
  40. },
  41. pipeline: $.pipeline()
  42. .match(_.expr($.and([$.eq(['$pub_id', '$$pub_id']), $.eq(['$user_id', OPENID])])))
  43. .project({
  44. _id: 0,
  45. follow_time: 1
  46. }).done(),
  47. as: 'follow'
  48. })
  49. .unwind('$follow')
  50. .skip(event.page_token)
  51. .limit(event.page_size)
  52. .end()
  53. return {
  54. list: publishers.list,
  55. next_page_token: event.page_token + publishers.list.length,
  56. status: 'OK'
  57. }
  58. } else {
  59. const publishers = await db.collection('publisher')
  60. .aggregate()
  61. .skip(event.page_token)
  62. .limit(event.page_size)
  63. .end()
  64. return {
  65. list: publishers.list,
  66. next_page_token: event.page_token + publishers.list.length,
  67. status: 'OK'
  68. }
  69. }
  70. }